Ho un attributo CoreData su un'entità su cui voglio memorizzare valori interi maggiori di Int32.max
e UInt32.max
. Il valore viene utilizzato come indice, quindi le prestazioni di ricerca sono importanti. Quindi ho deciso di utilizzare Integer 64
come tipo di dati in CoreData.Come utilizzare Core Data Integer 64 con Swift Int64?
Ora sto cercando di memorizzare un Int64 nella mia istanza di entità. Vedi anche i seguenti diversi approcci che ho provato.
Uso NSNumber
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSNumber
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSNumber'
Uso NSInteger
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : NSInteger
}
node.id = Int64(1)
> 'Int64' is not convertible to 'NSInteger'
Uso Int64
:
import Foundation
import CoreData
class Node : NSManagedObject {
@NSManaged var id : Int64
}
node.id = Int64(1)
> EXC_BAD_ACCESS (code=1, address=...)
Come dovrebbe essere definito l'attributo/assegnato al fine di utilizzare interi a 64 bit?
Utilizzando la soluzione proposta 'NSNumber (longLong: value)' ha funzionato. Sono d'accordo con te sul fatto che quest'ultimo è probabilmente un bug in Swift. – bouke
Il problema con Int64 che causa trap su architetture a 32 bit (18113807) è stato corretto in Xcode 6.1 beta. – bouke