Set auto increment in Core data iOS
Bin ich mit Core Data, und wollen die auto_increment-ID als eines der Felder, die einzigartig sein wird. Ist es möglich, auto_increment in iOS mit core data? Kann mir jemand helfen mit einem kleinen Beispiel, wie diese umsetzen?
Unten ist der code, durch die ich mich einfügen von Datensätzen in der Datenbank. In das erste Feld "id", ich möchte es als auto_increment und nicht manuell einfügen.
- (NSManagedObjectContext *)managedObjectContext {
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
NSManagedObjectContext *context = [self managedObjectContext];
//Create a new managed object
NSManagedObject *newObj = [NSEntityDescription insertNewObjectForEntityForName:@"Users" inManagedObjectContext:context];
[newObj setValue:[NSNumber numberWithInt:userId] forKey:@"id"];
[newObj setValue:theFileName forKey:@"Name"];
InformationsquelleAutor der Frage Anu Padhye | 2014-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Core-Daten, die nicht über ein auto-increment-Funktion. Die Tatsache, dass es verwendet SQLite intern ist weitgehend irrelevant-wenn Sie den Fokus auf SQL-ähnlichen details, erhalten Sie die Kern-Daten schlecht.
Wenn Sie möchten, eine increment-Feld, müssen Sie zum verwalten Sie es selber. Sie speichern den aktuellen Wert in Ihrem app
NSUserDefaults
. Oder Sie könnten es in den Metadaten, die für das dauerhafte speichern der Datei, die Core-Daten verwendet (siehe Methoden aufNSPersistentStoreCoordinator
). Entweder ist in Ordnung, so stellen Sie sicher, suchen Sie es, erhöhen Sie es, und speichern Sie Sie erneut, wenn Sie ein neues Objekt erstellen.Aber Sie wahrscheinlich nicht brauchen dieses Feld. Kern-Daten, die bereits verarbeitet eindeutige IDs für jedes verwaltete Objekt-- siehe
NSManagedObjectID
.InformationsquelleAutor der Antwort Tom Harrington
Hier ist etwas, das Sie tun können, aber nach dem speichern den Eintrag
So stellen Sie sicher, Berufung saveContext() auf, bevor Sie zu bekommen, sonst wirst du immer das bekommen, null
objective-C
Swift:
InformationsquelleAutor der Antwort nmortada