转换为 Swift 3.0 后出错

Error after converting to Swift 3.0

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

var arrayOfHours = stringArray.map {String(describing: [=11=]!.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")]

好吧,它给你一个 Optional 的字符串转换,因为如果 String() 找到其他东西而不是 String,那么 String() 将 return nil,所以你我要做的就是打开它,如 :

stringArray.map {String(describing: [=10=]!.characters.prefix(2))!}

刚刚向 String() 结果添加了强制解包 !

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

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