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 – 无法使用类型(Int64,String)的参数列表调用setValue全部内容,希望文章能够帮你解决ios – 无法使用类型(Int64,String)的参数列表调用setValue所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。