NSFetchRequest *fetchLLObjects = [[NSFetchRequest alloc] init];
[fetchLLObjects setEntity:[NSEntityDescription entityForName:@"CustomerOrder" inManagedObjectContext:self.managedObjectContext]];
[fetchLLObjects setIncludesPropertyValues:NO]; //only fetch the managedObjectID
NSError *error = nil;
NSArray *allObjects = [self.managedObjectContext executeFetchRequest:fetchLLObjects error:&error];
这里的数组显示为零。但在数据库中我可以看到有数据。我不知道可能是什么原因。
答案 0 :(得分:0)
请在fetchrequest中添加谓词
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CustomerOrder"
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"managedObjectID == %@", managedObjectID]] inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
答案 1 :(得分:0)
设置以下2个属性,您就完成了。
fetchRequest.returnsDistinctResults = YES;
fetchRequest.resultType = NSDictionaryResultType;
希望这有帮助。
修改强>
NSFetchRequest *fetchRequest= [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Songs" inManagedObjectContext:myManagedObjectContext];
//Take properties dictionary
NSDictionary *entityProperties = [entity propertiesByName];
[fetchRequest setEntity:entity];
[fetchRequest setReturnsDistinctResults:YES];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"song_type"]]];
NSArray * result = [myManagedObjectContext executeFetchRequest:fetchRequest error:nil];
答案 2 :(得分:0)
你说:"但是在数据库中我可以看到有数据。"
我对这种说法持怀疑态度。我怀疑核心数据存储中不存在CustomerOrder
个对象。唯一的方式来看"看"商店内的数据是关闭日记模式并使用第三方软件在.sqlite文件中达到峰值。
尽管其他人已经说过,但您的获取请求很好。因此,请仔细检查将对象插入存储区的代码并保存到上下文中。