Int32.max
및 UInt32.max
보다 큰 정수 값을 저장하려는 엔티티에 CoreData 특성이 있습니다. 이 값은 색인으로 사용되므로 조회 성능이 중요합니다. 따라서 CoreData에서 데이터 유형으로 Integer 64
을 사용하기로했습니다.Swift Int64와 함께 Core Data Integer 64를 사용하는 방법?
이제 엔티티 인스턴스에 Int64를 저장하는 방법에 대해 고심하고 있습니다. 내가 시도한 다음과 같은 다른 접근 방식을 참조하십시오.
사용 NSNumber
: NSInteger
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSNumber
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSNumber'
사용 : Int64
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSInteger
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSInteger'
사용 :
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
Int64가 32 비트 아키텍처에서 트랩을 발생시키는 문제 (18113807)가 Xcode 6.1 베타에서 수정되었습니다. – bouke