Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使连接到映射的字符串显示在标签中?_Ios_Swift - Fatal编程技术网

Ios 如何使连接到映射的字符串显示在标签中?

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

我正在编写一个应用程序,将一串字母分成3个字母组,然后通过
映射将这些字母组转换为指定的单词,我已经做对了。但是现在,我需要从
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.