目前,我正在开发一款预订汽车的应用程序。所有预订相关数据都存储在实体“预订”中。由于“预订”的某些属性或“预订”与其他内容之间的关系是强制性的,我决定将实体“预订”的所有托管对象添加到他们自己的托管对象中。此上下文也将存储在单独的变量中以避免丢失它。这工作正常,除非我签署(企业商店或adhoc)我的应用程序并部署它。 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;
}
}
在此状态下,预订对象将不会被保存!
课程预订VC
Bookings *booking = [Bookings booking];
NSLog(@"Context: %@", [booking managedObjectContext]);
没有任何保存或更改但上下文为空。
设备上的控制台输出(通过iPhone-Configurator或Testflight进行签名和部署)
... Context: (null)
模拟器或设备上的控制台输出(已签名但通过Xcode安装)
... Context: <NSManagedObjectContext: 0x893c520>
那么为什么未保存的managedObject会丢失其managedObjectContext,如何避免这种情况呢?这是一个错误还是预期的行为?