ios – 无法使用类型(Int64,String)的参数列表调用setValue

前端之家收集整理的这篇文章主要介绍了ios – 无法使用类型(Int64,String)的参数列表调用setValue前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在SO和谷歌检查了答案,我很难过.
func saveAvailableWord(word: GameWord) {
       let gw = NSEntityDescription.insertNewObjectForEntityForName("GameWord",inManagedObjectContext: persistence.managedObjectContext!) as! NSManagedObject
       let rId = word.rowID
       gw.setValue(rId,forKey: "rowID") //*** Error line
}

上面的代码用于核心数据,只是尝试创建一个对象.但我明白了

“Cannot invoke ‘setValue’ with an argument list of type ‘(Int64,forKey: String)’

标记的行上. rowID定义为@NSManaged var rowID:Int64,因为它来自sqlite ROWID列.

如果我用简单的数字替换rId变量,则错误消失.我错过了什么?我究竟做错了什么?

感谢您的时间和帮助.

解决方法

func setValue(value: AnyObject?,forKey key: String)

期望(可选)对象作为第一个参数.与Int不同,固定
大小整数类型Int64,Int32,…不会自动桥接到
NSNumber对象,因此您必须显式调用

gw.setValue(NSNumber(longLong: rID),forKey: "rowID")

但是如果在管理对象子类中将rowId定义为Int64,
然后你可以简单地分配属性

gw.rowID = rID

无需键值编码方法.

猜你在找的iOS相关文章