Ios 如何使连接到映射的字符串显示在标签中?
我正在编写一个应用程序,将一串字母分成3个字母组,然后通过Ios 如何使连接到映射的字符串显示在标签中?,ios,swift,Ios,Swift,我正在编写一个应用程序,将一串字母分成3个字母组,然后通过映射将这些字母组转换为指定的单词,我已经做对了。但是现在,我需要从print()命令到Label.text=命令获取代码的结尾 @IBOutlet weak var Label: UILabel! @IBOutlet weak var textField: UITextField! @IBAction func decBttn(_ sender: Any) { var textField:String let mappi
映射将这些字母组转换为指定的单词,我已经做对了。但是现在,我需要从print()
命令到Label.text=
命令获取代码的结尾
@IBOutlet weak var Label: UILabel!
@IBOutlet weak var textField: UITextField!
@IBAction func decBttn(_ sender: Any) {
var textField:String
let mapping = [
"aaa" :
"Lysine" ,
"aag" :
"Lysine" ,
"aac" :
"Asparagine" ,
// lots more here
]
let characters = textField.characters
var index = 0
while index < characters.count {
let start = textField.index(textField.startIndex, offsetBy: index)
var endOffset = index+3
if index+3 > characters.count {
endOffset = characters.count
}
let end = textField.index(textField.startIndex, offsetBy: endOffset)
let range = start..<end
let groupedSubstring = textField[range]
print(mapping [groupedSubstring] ?? groupedSubstring)
index = index + 3
@IBOutlet弱var标签:UILabel!
@IBOutlet弱var textField:UITextField!
@iAction func decBttn(uu发送方:任何){
var textField:String
让映射=[
“aaa”:
“赖氨酸”,
“aag”:
“赖氨酸”,
“aac”:
“天冬酰胺”,
//这里还有很多
]
让characters=textField.characters
var指数=0
而indexcharacters.count{
endOffset=characters.count
}
让end=textField.index(textField.startIndex,offsetBy:endOffset)
让range=start..您可能希望目标视图是UITextView
,而不是标签。UITextView
默认为多行,并且支持滚动
使用如下代码:
var output = ""
while index < characters.count {
let start = textField.index(textField.startIndex, offsetBy: index)
var endOffset = index+3
if index+3 > characters.count {
endOffset = characters.count
}
let end = textField.index(textField.startIndex, offsetBy: endOffset)
let range = start..<end
let groupedSubstring = textField[range]
output += mapping[groupedSubstring] ?? groupedSubstring + "\n"
index = index + 3
}
outputView.text = output
下面是视图控制器的字符串解析方法中的代码:
var input = "aaaaacaagxyza" //This is test data; You'd use user input.
let mapping = [
"aaa" :
"Lysine" ,
"aag" :
"Lysine" ,
"aac" :
"Asparagine" ,
// lots more here
]
let result = input.chunkBy(3)
.map { mapping[$0, default: $0] } //Map the array of chunks to dictionary lookups, or use the original if none found
//Use the reduce function to collapse the array of strings into one string with newlines.
.reduce ("",{ $0 + $1 + "\n" })
print (result)
//Now install your result into your text view.
因此,您不知道如何将字符串安装到标签中?这就是您的问题的症结所在。您创建了一个字典,并尝试将输入字段中的3个字符字符串映射到字典中的键。您编写了以3个字符块循环输入的代码。是否要合并映射每个3-c的结果标签中的字符组,因此您可能会得到“丝氨酸-精氨酸-缬氨酸-组氨酸”从12个字符的输入字符串中删除?如果您编写代码,将每个映射字符串依次安装到标签中,您最终会在标签中安装各种不同的字符串,而这些字符串是您永远看不到的,然后标签将包含最后一个结果。我想让映射字符串返回12个字符的字符串,并在e上加上一个单词每行和标签的设置都是正确的。那么如何安装由3个字符块循环的字符串呢?那么,var output=“”中有什么内容?我会在let mapping=?我对代码很陌生,这是我在学校和其他职责之间的一次学习经历,谢谢你的帮助!看看我所做的更改。我定义了一个空的var输出
。然后在while
循环中,我附加每个映射字符串(最后加一个换行符),到输出字符串。退出while循环后,将输出内容安装到文本字段的text属性中。这很奇怪,因为代码行let result=input.chunkBy(3)
返回时出现错误类型字符串的值没有成员chunkBy
,即使通过func chunkBy()
已明确说明包含chunkBy的字符串扩展必须在顶级,而不是在类内。因此,您选择了第二种函数式编程方法?如果我回答了您的问题,您应该接受我的回答,如果您觉得我帮了大忙,您应该考虑在有足够声誉的情况下投票支持我。(必须接受解决问题的最佳答案。追加投票纯粹是可选的,但被认为是有用答案的好形式。)
var input = "aaaaacaagxyza" //This is test data; You'd use user input.
let mapping = [
"aaa" :
"Lysine" ,
"aag" :
"Lysine" ,
"aac" :
"Asparagine" ,
// lots more here
]
let result = input.chunkBy(3)
.map { mapping[$0, default: $0] } //Map the array of chunks to dictionary lookups, or use the original if none found
//Use the reduce function to collapse the array of strings into one string with newlines.
.reduce ("",{ $0 + $1 + "\n" })
print (result)
//Now install your result into your text view.