我在一个实体上有一个CoreData属性,我希望存储比Int32.max
和UInt32.max
更大的整数值。该值用作索引,因此查找性能很重要。因此,我选择在CoreData中使用Integer 64
作为数据类型。
现在我正在努力想知道如何在我的实体实例上存储Int64。下面是我尝试过的不同方法:
使用NSNumber
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSNumber
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSNumber'
使用NSInteger
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSInteger
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSInteger'
使用Int64
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : Int64
}
node.id = Int64(1)
> EXC_BAD_ACCESS (code=1, address=...)
如何定义/分配属性以使用64位整数?
NSNumber(longLong: value)
能够起作用。我同意你的观点,后者很可能是 Swift 中的一个错误。 - Bouke