Core Data从其objectID获取子类NSManagedObject

时间:2012-11-22 21:14:02

标签: iphone objective-c ios core-data

我使用MOGenerator生成了3个实体,我希望能够从objectID

中获取其中一个实体

我试过了:

- (void)aMethod: (SpecialEntity1ID *)entityID
{
    //This is a method from MagicalRecord but it doesn't matter(I think...).
    NSManagedObjectContext *context = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];

    SpecialEntity1 *entity1 = [context objectRegisteredForID:entityID]
    //But this returns an NSManagedObject so it doesn't work...
}

有人可以帮助我用它的ID获取此对象吗?

由于我不知道如何使用ID来解决这个问题,我正在使用NSString作为参数而不是SecialEntity1ID来定义其中一个属性的方法此对象(并且是唯一的)并获取对象。

我认为回复他的ID更好,所以任何想法?

1 个答案:

答案 0 :(得分:2)

如果您100%确定它将是什么,您希望使用NSManagedObjectContext的existingObjectWithID:error:方法并对返回类型进行类型转换。我保持它是通用的,即让它返回一个NSManagedObject,然后在其他地方测试它的类,如果你想确定它是否属于一个特定的类。

- (Object*)retrieveObjectWithID:(ObjectID*)theID
{
    NSError *error = nil;
    Object *theObject = (Object*)[[NSManagedObjectContext contextForCurrentThread] existingObjectWithID:theID error:&error];
    if (error)
        NSLog (@"Error retrieving object with ID %@: %@", theID, error);
    return theObject;
}