微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

无需键值编码方法.

原文地址:https://www.jb51.cc/iOS/335587.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐