В настоящее время я разрабатываю приложение для бронирования автомобилей. Все данные, связанные с бронированием, хранятся в сущности «Заказы». Поскольку некоторые атрибуты «Бронирования» или отношения между «Книгами» и другими объектами являются обязательными, я решил добавить все управляемые объекты сущности «Заказы» в свой собственный managedObjectContext. Этот контекст также будет храниться в отдельной переменной, чтобы не потерять его. Это прекрасно работает, если я не буду подписывать (приложение для хранения в магазине или adhoc) мое приложение и развертывать его. ARC включен.Почему несохраненный управляемый объект теряет свой управляемый объектObjectContext
Класс Бронирования интерфейс
@interface Bookings : NSManagedObject {
@private
NSManagedObjectContext *mContext;
}
@end
Бронирование Класс реализации
@implementation Bookings {
+ (Bookings *)booking {
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:concurrencyType];
[context setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
Bookings *object = (Bookings*)[[NSManagedObject alloc] initWithEntity:[self entityForName:pName] insertIntoMarenagedObjectContext:context];
[object setSomeReservationData:...];
...
// here I store the context in an ivar of my booking object
[object->mContext = context];
return object;
}
}
В этом состоянии объект Бронирование не будет сохранено!
Класс BookingsVC
Bookings *booking = [Bookings booking];
NSLog(@"Context: %@", [booking managedObjectContext]);
Nothing сохранены или изменены, но контекст является недействительным.
вывода консоли на устройстве (АПЧРК подписанного и развернут с помощью iPhone-Configurator или Testflight)
... Context: (null)
Консоль вывода на тренажере или устройства (АПЧРК подписанного, но установлен с помощью Xcode)
... Context: <NSManagedObjectContext: 0x893c520>
Так почему же несохраненный управляемый объект теряет свой управляемый объект ObjectContext и как этого можно избежать? Это ошибка или ожидаемое поведение?
Как объявляется 'mContext'? –
Он объявлен как «NSManagedObjectContext * mContext». Я уточню свой вопрос. – lindinax