我最近决定我的Core Data商店变得非常混乱所以我决定删除它。在这里搜索我使用以下代码删除我的数据
NSManagedObjectContext *context = [self managedObjectContext];
NSError *error;
NSFetchRequest * allData = [[NSFetchRequest alloc] init];
[allData setEntity:[NSEntityDescription entityForName:@"TimeLineItem" inManagedObjectContext:context]];
[allData setIncludesPropertyValues:NO]; //only fetch the managedObjectID
NSArray * datas = [context executeFetchRequest:allData error:&error];
//error handling goes here
for (NSManagedObject * data in datas) {
[context deleteObject:data];
}
NSError *saveError = nil;
[context save:&saveError];
一切都很好。然后我注释掉删除代码并打开以下代码在商店中创建占位符数据,并查看数据(在这种情况下,我刚创建的数据)
NSManagedObjectContext *context = [self managedObjectContext];
TimeLineItem *timeLineItem = [NSEntityDescription
insertNewObjectForEntityForName:@"TimeLineItem"
inManagedObjectContext:context];
timeLineItem.locationName = @"Test Bank2";
timeLineItem.date = [NSDate date];
NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TimeLineItem"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (TimeLineItem *info in fetchedObjects) {
NSLog(@"loc: %@", info.locationName);
NSLog(@"Date: %@", info.date);
}
仍然没有问题。然而,在下一次运行时,假设我已经离开虚拟数据输入线,只有最后一个(刚刚创建的最新虚拟数据)返回为非零。参见附图(假设只有2个取物而不是6个作为对象[0] - [3]都与[4] - nil相同)。
我也直接查看了sqlite数据库,数据一切正常:
在发布后从sqlite数据库中读取数据时,是否有人可以了解我的数据发生了什么?
答案 0 :(得分:0)
令您烦恼的nil
属性只显示在调试器中,因为尚未提取详细信息。如果您遍历结果并记录特定属性,例如locationName
,您会看到它就在那里。