1

所以我正在尝试弄清楚如何使用这些谓词,我已经阅读了 Apple 文档并尝试使用它(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates /Articles/pUsing.html) 并且我已经设置了谓词,但它不断得到线程 1:EXC_BAD_ACCESS (code =) etc.etc。

    NSError *error;
    NSLog(@"1");

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
   NSEntityDescription *entity = [NSEntityDescription entityForName:@"Fruit" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
  NSLog(@"2");
    NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @"Source.sourceName contains[cd] %@", "Apple Tree"];

    [fetchRequest setPredicate:predicate];
    NSLog(@"3");
    NSArray *fetchResult = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
    NSLog(@"4");
    testLbl.text = [fetchResult objectAtIndex:0];

这就是我正在使用的代码,至于我们拥有的核心数据......

实体水果和来源

属性fruitName & sourceName

关系(一对一)fruitSource<--------->sourceFruit

我想做的是拔出苹果树上的任何果实...>.<

4

1 回答 1

1

有两个不同的问题:

  1. 要从Fruit相关关系中获取,Source您必须使用关系:@"fruitSource.sourceName contains ..."而不是@"Source.sourceName contains ...".

  2. (这可能是导致异常的原因。)该%@格式需要一个 Objective-C 对象作为参数,而不是一个 C 字符串:@"Apple Tree"而不是"Apple Tree".

所以谓词应该是这样的:

[NSPredicate predicateWithFormat:@"fruitSource.sourceName CONTAINS[cd] %@", @"Apple Tree"]
于 2012-11-27T14:46:04.843 回答