Ich bin gespannt, was der beste Weg ist, ein neues NSManagedObject in RestKit 0.20 zu erstellen? Derzeit sieht mein Code in etwa so aus:RestKit 0.20 - Was ist der bevorzugte Weg, um ein neues NSManagedObject zu erstellen?
#pragma mark - navigation buttons
- (void)createButtonDidTouch
{
// create new album object
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
NSManagedObjectContext *parentContext = RKObjectManager.sharedManager.managedObjectStore.mainQueueManagedObjectContext;
context.parentContext = parentContext;
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Album" inManagedObjectContext:parentContext];
Album *newAlbum = [[Album alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:context];
// pass object to create view to manipulate
AlbumCreateViewController *createViewController = [[AlbumCreateViewController alloc] initWithData:newAlbum];
createViewController.delegate = self;
createViewController.managedObjectContext = context;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:createViewController];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:navController animated:YES completion:nil];
}
#pragma mark - create view controller delegate
- (void)createViewControllerDidSave:(NSManagedObject *)data
{
// dismiss the create view controller and POST
// FIXME: add restkit code to save the object
NSLog(@"save the object...");
NSDictionary *userInfo = [KeychainUtility load:@"userInfo"];
NSString *path = [NSString stringWithFormat:@"/albums/add/%@/%@", userInfo[@"userID"], userInfo[@"apiKey"]];
[RKObjectManager.sharedManager postObject:data path:path parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
operation.targetObject = data;
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"create album error: %@", error);
}];
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)createViewControllerDidCancel:(NSManagedObject *)data
{
// dismiss the create view controller
NSLog(@"delete the object...");
// FIXME: add restkit code to delete the object
[self dismissViewControllerAnimated:YES completion:nil];
}
Ich bin auch neugierig zu wissen, was meine Verantwortlichkeiten für das Speichern/Löschen dieses Objekts sind. Wenn ich über RestKit den Server anmelde, wird der Kontext des verwalteten Objekts gespeichert?
Was passiert, wenn ich diesen Erstellungsprozess abbrechen möchte - was ist die bevorzugte Methode, um dieses Objekt zu löschen?
Grundsätzlich, wie viel tut RestKit für mich, und was soll ich tun, um sicherzustellen, dass ich es tue. Ich habe dazu nicht viel Dokumentation gefunden und möchte es klarstellen.
Wie würde ich dieses Objekt dann löschen - vorausgesetzt, ich habe das Objekt mit dem obigen Code erstellt, aber nicht die POST-Anfrage ausgelöst - eher abgebrochen/schließen Sie die "create" View-Controller? Nur durch meinen lokalen NSMangedObjectContext? –
Im obigen Code wurde es in den Kontext eingefügt, aber nicht gespeichert. Sie könnten es aus dem Kontext löschen, wenn der View-Controller nicht mehr angezeigt wird. Aber ich würde empfehlen, dass Sie ** NOT ** Objekte direkt in den "managedObjectStore.mainQueueManagedObjectContext" einfügen, aber stattdessen einen untergeordneten verwalteten Objektkontext erstellen, wenn Sie zum Erstellungscontroller übergehen und ihn dem Controller zuweisen. Was Sie dann tun können ist, lassen Sie die MOC dealloc, wenn Sie abbrechen. –
Gibt es eine Verknüpfung zum Erstellen des untergeordneten Kontexts? bevor ich mich erinnere, etwas wie [Album createObject] - oder etwas Ähnliches zu verwenden. –