基于核心数据中关系名称获取关系中的所有对象

时间:2011-05-29 11:11:44

标签: objective-c xcode core-data

假设我有一个名为Business的coreData对象。 Business有许多关系。

BusinessPhonesImagesDistrictsURLs等。

我知道我可以做NSSet somePhones = self.Phones吗?

如果我想创建一个函数,给定关系的名称,即@“Phones”将给我相同的集合。

所以NSSet * getManyRelationship:(NSString relationshipName)

我能把它拉出来吗?

2 个答案:

答案 0 :(得分:1)

您可以通过[Business attributeKeys]访问所有属性名称 并检查任何属性的isTooMany属性。结果将是你需要的。

答案 1 :(得分:1)

在NSManagedObject的类别中定义一个如下所示的方法:

- (NSSet *)getManyRelationship:(NSString *)relationshipName{
    // insert sanity checking for relationshipName form
    // needs to be camelcase:
    //     'photos' rather than 'Photos'
    //     'userPhotos' rather than 'UserPhotos' or 'userphotos'
    SEL method = NSSelectorFromString(relationshipName);
    if([workout respondsToSelector:method])
        return objc_msgSend(self, method);
    return nil;
}