目前,我正在开发一个应用程序来预订汽车。 所有预订相关的数据都存储在一个实体“预约”。 由于“预约”等enties之间的“预约”的某些属性或关系是强制性的,我决定实体“预约”的所有managedObjects添加到自己的managedObjectContext。 这方面也将被存储在一个单独的变量,避免遗失。 这工作得很好,除非我会签(企业存储或即席)我的应用和部署。 ARC已启用。
类预订界面
@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]);
没有保存或改变,但是情况下是空的。
上设备的控制台输出(自组织签署并通过iPhone-配置或部署Testflight)
... Context: (null)
上模拟器或设备(自组织签署但通过Xcode的安装)控制台输出
... Context: <NSManagedObjectContext: 0x893c520>
那么,为什么一个未保存managedObject失去managedObjectContext和这可怎么避免? 它是一个错误或预期的行为?