У меня была такая же проблема, и я нашел эту статью о созданных отключенных объектах, которые позже можно было добавить в контекст: http://locassa.com/temporary-storage-in-apples-coredata/
Идея состоит в том, что у вас есть NSManagedObject, потому что вы собираетесь хранить объекты в базе данных. Мое препятствие состояло в том, что многие из этих объектов загружаются через HTTP API, и я хочу выбросить большинство из них в конце сеанса. Подумайте о потоке пользовательских сообщений, а я хочу сохранить только те, которые были добавлены в избранное или сохранены как черновик.
Я создаю все свои сообщения, используя
+ (id)newPost {
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Post" inManagedObjectContext:self.managedObjectContext];
Post *post = [[Post alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:nil];
return post;
}
и затем посты вставляются в локальный контекст управляемого объекта, когда они добавляются в избранное
+ (BOOL)favoritePost:(Post *)post isFavorite:(BOOL)isFavorite
{
// Set the post's isFavorite flag
post.isFavorite = [NSNumber numberWithBool:isFavorite];
// If the post is being favorited and not yet in the local database, add it
NSError *error;
if (isFavorite && [self.managedObjectContext existingObjectWithID:post.objectID error:&error] == nil) {
[self.managedObjectContext insertObject:post];
}
// Else if the post is being un-favorited and is in the local database, delete it
else if (!isFavorite && [self.managedObjectContext existingObjectWithID:post.objectID error:&error] != nil) {
[self.managedObjectContext deleteObject:post];
}
// If there was an error, output and return NO to indicate a failure
if (error) {
NSLog(@"error: %@", error);
return NO;
}
return YES;
}
Надеюсь, это поможет.