gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:59:21 25 4
gpt4 key购买 nike

我已经在 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 不同,固定的大小整数类型 Int64Int32 ... 不会自动桥接到NSNumber 对象,所以你必须显式调用

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

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

gw.rowID = rID

无需键值编码方法。

关于ios - 无法使用类型为 (Int64, String) 的参数列表调用 setValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32437401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com