Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 除最后一个条目外,核心数据fetchedObjects Data=nil_Ios_Objective C_Sqlite_Core Data - Fatal编程技术网

Ios 除最后一个条目外,核心数据fetchedObjects Data=nil

Ios 除最后一个条目外,核心数据fetchedObjects Data=nil,ios,objective-c,sqlite,core-data,Ios,Objective C,Sqlite,Core Data,我最近决定我的核心数据存储变得非常混乱,所以我决定删除它。在这里搜索时,我使用以下代码删除了我的数据 NSManagedObjectContext *context = [self managedObjectContext]; NSError *error; NSFetchRequest * allData = [[NSFetchRequest alloc] init]; [allData setEntity:[NSEntityDescription entityForName:@"TimeLi

我最近决定我的核心数据存储变得非常混乱,所以我决定删除它。在这里搜索时,我使用以下代码删除了我的数据

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];
一切都很好。然后,我注释掉了删除代码,并打开了以下代码以在存储中创建占位符数据,并查看数据(在本例中,是我刚刚创建的)

还是没有问题。但是,在下一次运行时,假设我保留了虚拟数据输入行,只有最后一个(刚刚创建的最新虚拟数据)返回为非nil。请参阅所附图片(假设只有2个提取的对象,而不是6个,因为对象[0]-[3]与[4]-nil都相同)

我还直接查看了sqlite数据库,数据都很好:


在接下来的发布中,当我的数据从sqlite数据库中读取时,有人能说明我的数据发生了什么吗

使您恼火的
nil
属性只是显示在调试器中,因为尚未获取详细信息。如果您反复查看您的结果和特定于日志的属性,例如,
locationName
,您将看到它们都在那里。

当您说特定于日志的属性时,这与我上面所做的NSLog有什么不同?这是因为核心数据总是在后台进行优化。它将获取绝对最小值,并仅在必要时填空。这就是所谓的。
    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);
}