iOS:核心数据,与自动ID的关系数
我有两个实体:树林和树 森林与树有关系,因为一片森林可以有许多树。 好的,很简单 在我的应用程序中,我知道一棵树的id自动id:NSManagedObjectID,我想知道有多少棵树有我的树 我的代码是: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 =
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]。作为补充说明,在命名变量和方法时没有遵循适当的约定。我建议阅读下面的文章,让别人更容易帮助你解决问题。