iOS:核心数据,与Auto ID的关系数



我有两个实体:Woods和Tree

Woods和Tree有关系,因为一个Woods可以有很多棵树。好吧,很简单。

在我的应用程序中,我知道一个树林的id(自动id: NSManagedObjectID),我想知道有多少棵树有我的树林。

我的代码是:
NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName:@"Tree"];
        [req setPredicate:[NSPredicate predicateWithFormat:@"wood.self == %@", [self app].current_wood_id]];
        [req setResultType:NSCountResultType];
        NSUInteger total = [context countForFetchRequest:req error:&error];
        NSLog(@"total:%d", (int)total);

但是它不工作,为什么?

您应该停止在id中思考,而是接受对象图。您用来标识对象的id不是用于此目的的(而是用于跨线程标识对象)。

谓词中的关系就像属性一样:

[NSPredicate predicateWithFormat:@"wood = %@", aWoodInstance];

在您特定的情况下,您不需要fetch请求。就写:

wood.trees.count

再容易不过了!看到对象图有多强大了吧?

最新更新