核心数据:NSPredicate 一对多对多关系

Core Data: NSPredicate one to many to many relations

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

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

有大佬知道怎么查询核心数据里的所有歌曲,不分专辑不分曲风吗?

非常感谢你的帮助。

更新:

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

结果数组为空。你们有人知道我做错了什么吗?

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

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

您的抓取看起来不错(只是跳过了实体描述)。单步执行代码并确保:

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

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