【问题标题】:Why do I get the error "Argument type 'String' does not conform to expected type 'sequence'为什么我会收到错误“参数类型‘字符串’不符合预期类型‘序列’
【发布时间】:2016-11-16 18:03:03
【问题描述】:

我正在尝试将用户输入从 textField 转换为数组。 我按照这里提供的代码https://stackoverflow.com/a/27501398

let someString : String = someTextField.text!
let someArray = Array(someString).map { String($0).toInt()! }

然后我得到这个错误:

 Argument type "String" does not conform to expected type "Sequence"

我做错了什么?

【问题讨论】:

  • 当我用文字代替 someTextField.text! 时对我有用。可以加个测试用例吗?
  • @Eric M. 感谢您的帮助!我不确定您所说的“测试用例”是什么意思。

标签: iphone xcode8 swift2.3


【解决方案1】:

似乎从 Swift 2.0 开始,String 不再符合 SequenceType。如果你真的喜欢函数式编程,你可以解决这个问题。不过,这里没必要这么花哨:

let text : String = "12345"
var digits = [Int]()
for element in text.characters {
    digits.append(Int(String(element))!)
}

【讨论】:

  • 感谢您的帮助!但是,您的建议似乎只适用于文字,而不适用于 textField 输入。我尝试了您的方法并用 someTextField.text 替换了“12345”!现在我在“digits.append(element.toInt())”行收到一个错误,上面写着“'Character' 类型的值没有成员'toInt'”
  • @Theodore.K 您需要使用Int(element) 而不是element.toInt()。很抱歉延迟回复。
  • @Theodore.K 对此进行扩展,似乎 .toInt() 等在 Swift 2.0 中也被删除了,请参阅 here
  • 谢谢!我试过了,但我得到了一个错误:“无法使用类型为 '(Character)' 的参数列表调用类型为 'Int' 的初始化程序
  • 这是该行当前的样子:digits.append(Int(element))
【解决方案2】:

Swift 4 characters 已被弃用,所以上面的代码是这样的:

let text : String = "12345"
var digits = [Int]()
for element in text {
    digits.append(Int(String(element))!)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2016-01-05
    • 1970-01-01
    相关资源
    最近更新 更多