Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.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 在swift中获取字符串的每个字符_Ios_Swift_Swift3_Character - Fatal编程技术网

Ios 在swift中获取字符串的每个字符

Ios 在swift中获取字符串的每个字符,ios,swift,swift3,character,Ios,Swift,Swift3,Character,我正在接受一个60个字符的用户输入,所有十六进制字符,并将其分解为4个部分,因此给我15个4个部分,也就是15个“单词”。然后我取其中一个单词,把它转换成16个字符的二进制数。这16个字符各自映射到各自的特定错误代码,如果为0,则表示无错误,如果为1,则表示错误。我试图弄清楚是否有一种方法可以获取二进制字符串的每个字符,并将其映射到它自己的特定错误代码,就像这样 var error_str = "Not used:\(decNumb_str[0]) \nNot used:\(decNum

我正在接受一个60个字符的用户输入,所有十六进制字符,并将其分解为4个部分,因此给我15个4个部分,也就是15个“单词”。然后我取其中一个单词,把它转换成16个字符的二进制数。这16个字符各自映射到各自的特定错误代码,如果为0,则表示无错误,如果为1,则表示错误。我试图弄清楚是否有一种方法可以获取二进制字符串的每个字符,并将其映射到它自己的特定错误代码,就像这样

    var error_str = "Not used:\(decNumb_str[0]) \nNot used:\(decNumb_str[1])"...... 
因此,每个单词给我16条错误消息

我已经看过:

但是,当我试图完成此操作时,我不认为链接中显示的代码对我有帮助:

    let wordOne = UIAlertAction(title: "Word 1", style: .default)
  {
    (alert) -> Void in
    var str_start = 0
    var str_end = 56
    if self.textView.text == "" || self.textView.text == "No input value"
    {
      self.textView.text = "No input value"
    }
    else
    {
      let start_index = orig_hex_str.index(orig_hex_str.startIndex, offsetBy: str_start)
      let end_index = orig_hex_str.index(orig_hex_str.endIndex, offsetBy: -str_end)
      let sub_str = orig_hex_str[start_index..<end_index]
      let hexNumb_int = Int(sub_str, radix:16)
      let decNumb_str = String(hexNumb_int!, radix:2)
      let padded_str = String(self.pad(string: decNumb_str, toSize: 16))
      //Attempting to put error statement here
      //var error_str = "Not used:\(padded_str?.characters[0]) \nNot used:\(padded_str?.characters[1]) \nNot used:\(padded_str?.characters[2])"
      self.textView.text = padded_str
    }
  }
  wordSelection.addAction(wordOne)
让wordOne=UIAlertAction(标题:“Word 1”,样式:。默认值)
{
(警报)->在中无效
var str_start=0
var str_end=56
如果self.textView.text==“|self.textView.text==”无输入值”
{
self.textView.text=“无输入值”
}
其他的
{
让起始索引=起始十六进制索引(起始十六进制索引,偏移量:起始)
设end_index=orig_hex_str.index(orig_hex_str.ENDEX,offsetBy:-str_end)

让sub_str=orig_hex_str[start_index..您实际上想做什么还不够清楚,但是您可以将字符串的每个字符应用
映射到
字符
属性,或者使用for in

使用
映射

let error_str = padded_str.characters.map {"Not used:\($0)"}.joined(separator: " \n")
print(error_str)
/*↓
Not used:0
Not used:0
Not used:0
Not used:0
Not used:0
Not used:0
Not used:0
Not used:1
Not used:0
Not used:0
Not used:1
Not used:0
Not used:0
Not used:0
Not used:1
Not used:1
 */
或者,在示例中,以下内容几乎是等效的:

var error_str = ""
for ch in padded_str.characters {
    if !error_str.isEmpty {
        error_str.append(" \n")
    }
    error_str.append("Not used:\(ch)")
}
print(error_str)

“但这行不通”:请解释。我不明白你想做什么。你能提供一个工作区片段来显示你的输入,以及你希望你的输出是什么吗?用户输入将是60个字符,都可以识别为十六进制值。然后我的代码将从开始一次使用4个字符,将其转换为二进制,然后输出t按字符输入二进制。第一个字(即用户输入的前4个字符)要识别的字符有一个十六进制值,转换为二进制,然后16位二进制代码将有一个与每个字符相关的错误消息。如果输出为0,则没有错误,如果输出为1,则有错误,etc@ScottHunter它不会工作,因为Swift没有任何内置的方式来识别代码是什么,比如C++是的。我正在尝试找到一种方法来打印每个字符并将每个字符与字符串绑定。尝试时,我收到此错误消息:“下标”不可用:无法将字符串下标为Int,请参阅文档注释以进行讨论。您是否可以发布一个示例输入字符串和预期输出。第一个示例是mple正在寻找。我只需要找出如何为语句编写自定义错误消息。例如,前3个零没有使用,下一个零是左腿骨折,后一个右翼骨折等。我为不够清楚而道歉,我将尝试在将来做得更好。
var error_str = ""
for ch in padded_str.characters {
    if !error_str.isEmpty {
        error_str.append(" \n")
    }
    error_str.append("Not used:\(ch)")
}
print(error_str)