核心数据:NSPredicate一对多关系

时间:2015-11-03 20:57:54

标签: ios objective-c core-data nspredicate

我有一个这样的核心数据模型:

enter image description here

但是我在尝试查询专辑或流派歌曲的所有名称时遇到了问题。

你们中的任何人都知道如何查询核心数据中的所有歌曲,无论专辑或流派如何?

我真的很感谢你的帮助。

更新

NSManagedObjectContext *moc = [self managedObjectContext];  managedObjectContext];
    NSEntityDescription *description = [ NSEntityDescription entityForName:@"Song" inManagedObjectContext:moc];
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Song"];
    request.entity = description;
    NSError *error = nil;
    NSArray *results = [moc executeFetchRequest:request error:&error];

结果数组为空。你们中的任何人都知道为什么或者我做错了什么?

2 个答案:

答案 0 :(得分:1)

你的fetch看起来很好(只是跳过实体描述)。逐步完成代码并确保:

  • 托管对象上下文不是nil
  • executeFetchRequest的结果不是nil,而是NSArray
  • 检查结果的内容
  • 如果它不包含数据,请将持久存储的位置记录到控制台(当您设置核心数据堆栈时),cd到文档文件夹并使用{{1检查sqlite文件命令行工具。检查您期望的记录是否存在。

如果有效,则可能是数据的显示而不是检索的问题。

答案 1 :(得分:0)

只需为该CoreData模型创建一个获取请求并执行fetch

NSFetchRequest *request= [NSFetchRequest fetchRequestWithEntityName:@"Song"];