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

iOS:核心数据,与自动ID的关系数,ios,core-data,nspredicate,nsfetchrequest,Ios,Core Data,Nspredicate,Nsfetchrequest,我有两个实体:树林和树 森林与树有关系,因为一片森林可以有许多树。 好的,很简单 在我的应用程序中,我知道一棵树的id自动id:NSManagedObjectID,我想知道有多少棵树有我的树 我的代码是: NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName:@"Tree"]; [req setPredicate:[NSPredicate predicateWithFormat:@"wood.self =

我有两个实体:树林和树

森林与树有关系,因为一片森林可以有许多树。 好的,很简单

在我的应用程序中,我知道一棵树的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);

但是它不起作用,为什么呢?

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

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

[NSPredicate predicateWithFormat:@"wood = %@", aWoodInstance];
在您的特定情况下,您不需要获取请求。只要写下:

wood.trees.count

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

不要使用对象ID,在谓词中使用对象本身。mmmm你能解释一下吗?不要使用森林的对象ID。利用森林本身。使用NSManagedObjectContext的objectWithID:method.ok和after从其对象ID实例化Woods?获取my wood的树数的谓词形式是什么?[NSPredicate predicateWithFormat:@wood==%@[self-app]。current_-wood]。作为补充说明,在命名变量和方法时没有遵循适当的约定。我建议阅读下面的文章,让别人更容易帮助你解决问题。