转换为Swift 3.0后出错

时间:2016-09-22 08:51:21

标签: ios swift prefix

将项目转换为Swift 3.0后,我在变量日志中找到错误:

var arrayOfHours = stringArray.map {String(describing: $0!.characters.prefix(2))}

错误是:

code of error:  "Optional(Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x000060800024ee70), _countAndFlags: 2, _owner: Optional(Swift._HeapBufferStorage<Swift._StringBufferIVars,
 Swift.UInt16>))))"

我的错误发生在哪里?

更新:

var stringArray in console: [Optional("1226"), Optional("1249"), Optional("1312"), Optional("1336"), Optional("1359"), Optional("1422"), Optional("1446"), Optional("1509"), Optional("1532"), Optional("1549"), Optional("1607"), Optional("1624"), Optional("1642"), Optional("1659"), Optional("1717"), Optional("1734"), Optional("1752"), Optional("1809"), Optional("1827"), Optional("1844"), Optional("1902"), Optional("1919"), Optional("1954"), Optional("2032"), Optional("2107"), Optional("2142"), Optional("2217"), Optional("2252"), Optional("2327"), Optional("2402"), Optional("2437"), Optional("2512")]

2 个答案:

答案 0 :(得分:1)

var stringArray: [String?] = ["1226", "1249"]
print(stringArray) // [Optional("1226"), Optional("1249")]

var arrayOfHours = stringArray.map { String($0!.characters.prefix(2)) }
print(arrayOfHours) // ["12", "12"]

答案 1 :(得分:0)

那么它给你一个Optional的字符串转换,因为String()如果找到别的东西而不是String将返回nil,那么你需要做的就是打开包装就像在:

stringArray.map {String(describing: $0!.characters.prefix(2))!}

刚刚向!结果

添加了一个强制解包String()