目前,我正在开发一款预订汽车的应用程序。所有与预订相关的数据都存储在实体“预订”中。由于“预订”或“预订”与其他实体之间的关系的某些属性是强制性的,我决定将实体“预订”的所有managedObjects添加到他们自己的managedObjectContext中。这个上下文也将存储在一个单独的变量中以避免丢失。这工作正常,除非我会签署(企业商店或adhoc)我的应用程序并部署它。 ARC已启用。为什么未保存的managedObject会丢失其managedObjectContext
类预订界面
@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]);
没有保存或改变,但是情况下是空的。
上设备
... Context: (null)
上模拟器或设备(自组织签署但安装通过的Xcode)控制台输出
... Context: <NSManagedObjectContext: 0x893c520>
(自组织通过iPhone-配置或Testflight签署并展开)
控制台输出 那么为什么一个未保存的managedObject会丢失它的managedObjectContext,这怎么可以避免呢?这是一个错误还是预期的行为?
如何声明'mContext'? – 2013-04-05 18:34:59
它被声明为'NSManagedObjectContext * mContext'。我会更新我的问题。 – lindinax 2013-04-10 21:57:13