1

在我的应用程序中,我想这样当用户打开应用程序并且没有对象时,我希望它将一个对象添加到表视图的第一部分。我在我的 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 是什么?

4

2 回答 2

1

只需执行您通常会执行的获取来填充您的表格。如果它没有返回任何记录,那么对于您的目的,商店是空的。这才是你真正想知道的问题。

同一个持久存储中可能存在与您的表记录无关的记录,因此对于此类问题,不必担心存储中实体的确切数量。(不要假设您的模型永远不会改变;将独立实体放入商店是完全合法的。)

于 2013-07-27T01:40:03.523 回答
0

如果您的意思是空的 NSManagedObjectContext 没有未提交的更改,那么您可以使用它:

- (BOOL)hasChanges

返回一个布尔值,指示接收者是否有未提交的更改。

或者,如果您想重置它以确保没有更改,您可以使用它:

- (void)reset

所有接收者管理的对象都被“遗忘”了。如果使用此方法,则应确保还丢弃对使用接收器获取的任何托管对象的引用,因为之后它们将无效。

Ooooorrrr,您可以检查所有这些是否为空(或 nil):

  • (NSSet *)insertedObjects

已插入接收器但尚未保存在持久存储中的对象集。

  • (NSSet *)updatedObjects

向接收者注册的具有未提交更改的对象集。

  • (NSSet *)deletedObjects

在下一次保存操作期间将从其持久存储中删除的一组对象。

引用来源

于 2013-07-27T01:09:48.930 回答