在我的应用程序中,我希望这样做,以便当用户打开应用程序并且没有对象时,我希望它将对象添加到表视图的第一部分。我在我的App Delegate中知道方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
我可以这样做:
if (XXXXXX){
NSManagedObjectContext *context = self.managedObjectContext;
NSManagedObject *startingTask = [NSEntityDescription insertNewObjectForEntityForName:@"Tasks" inManagedObjectContext:context];
[startingTask setValue:@"Eat Dinner" forKey:@"taskName"];
[startingTask setValue:[NSNumber numberWithDouble:400] forKey:@"timeInterval"];
[startingTask setValue:@"Tasks To Complete" forKey:@"sectionString"];
}
其中XXXXX检查managedobjectcontext是否为空(或基本上没有要提取的对象)。
但是什么是XXXXX?
答案 0 :(得分:1)
只需执行您通常会执行的提取来填充表格。如果它没有返回任何记录,那么商店为您的目的是空的。这是你真正想知道的问题。
可能在同一持久性存储中可能存在与您的表记录无关的记录,因此不要担心存储中针对此类问题的实体总数。 (不要以为你的模型永远不会改变;将独立实体放入商店是完全合法的。)
答案 1 :(得分:0)
如果你的意思是空的NSManagedObjectContext没有未提交的更改,那么你可以使用它:
- (BOOL)hasChanges
返回一个布尔值,指示接收器是否具有 未提交的更改。
或者如果您想重置它以确保没有任何更改,您可以使用它:
- (void)reset
所有接收者的管理对象都被“遗忘”。如果你使用它 方法,你应该确保你也放弃对any的引用 使用接收器获取的托管对象,因为它们将无效 之后。
Ooooorrrr,您可以检查所有这些是否为空(或零):
- (NSSet *)insertedObjects
已插入接收器但未插入的对象集 然后保存在一个持久的商店里。
- (NSSet *)updatedObjects
在接收器中注册的未提交的对象集 变化。
- (NSSet *)deletedObjects
将从其持久性存储中删除的对象集 在下一次保存操作期间。