【发布时间】:2017-12-23 20:24:01
【问题描述】:
我是 Swift 新手,遇到了一个错误问题这个类与键的键值编码不兼容。
我已重新阅读所有相关主题,但没有找到解决此问题的方法。
请查看代码并给我一些建议,我做错了什么?
class FriendScore: NSObject {
var name:String?
var highestScore:Int?
}
var allScoresArr = [FriendScore]()
var dataArr = [[String:Any]]()
dataArr =[["name": "Ben", "highestScore": 15],["name": "Alex", "highestScore": 12]]
for user in dataArray {
if let dictionary = user as? [String:Any] {
let friendScore = FriendScore()
//Error Happens Here "Thread Breakpoint"
friendScore.setValuesForKeys(dictionary)
allScoresArr.append(friendScore)
}
}
print(allScoresArr)
错误:
<__lldb_expr_73.FriendScore 0x608000266080>
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key highestScore.
'libc++abi.dylib: terminating with uncaught exception of type NSException
【问题讨论】:
-
基本上是 stackoverflow.com/questions/26366082/… 的副本:
Int?在 Objective-C 中是不可表示的。将其设为Int或NSNumber? -
@Martin R 感谢您的帮助!
-
我也打过这个。不幸的是,“经验教训”是 Swift 不如 Objective-C 灵活和强大,这在本机语言中是显而易见的
标签: arrays swift dictionary