Ich habe ein CoreData-Attribut für eine Entität, auf der ich ganzzahlige Werte speichern möchte, die größer sind als Int32.max
und UInt32.max
. Der Wert wird als Index verwendet, daher ist die Nachschlageleistung wichtig. Also habe ich mich entschieden, Integer 64
als Datentyp in CoreData zu verwenden.Wie verwendet man Core Data Integer 64 mit Swift Int64?
Jetzt habe ich Probleme, wie ich ein Int64 auf meiner Entity-Instanz speichern kann. Siehe auch die folgenden verschiedenen Ansätze, die ich ausprobiert habe.
Verwendung NSNumber
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSNumber
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSNumber'
Verwendung NSInteger
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSInteger
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSInteger'
Verwendung Int64
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : Int64
}
node.id = Int64(1)
> EXC_BAD_ACCESS (code=1, address=...)
Wie sollte das Attribut, um 64-Bit-Integer verwenden definiert/zugewiesen werden?
Mit Ihrer vorgeschlagenen Workaround 'NSNumber (longLong: Wert)' gearbeitet. Ich stimme Ihnen zu, dass letzteres wahrscheinlich ein Fehler in Swift ist. – bouke
Das Problem mit Int64, das Traps auf 32-Bit-Architekturen verursacht (18113807), wurde in Xcode 6.1 Beta behoben. – bouke