如何从NSManaged对象上下文中获取数据

时间:2014-04-01 05:35:58

标签: ios iphone ios7 cocos2d-iphone

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];

这里的数组显示为零。但在数据库中我可以看到有数据。我不知道可能是什么原因。

3 个答案:

答案 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文件中达到峰值。

尽管其他人已经说过,但您的获取请求很好。因此,请仔细检查将对象插入存储区的代码并保存到上下文中。