Inheritance ForSelector转发目标的机制:使用核心数据类

Inheritance ForSelector转发目标的机制:使用核心数据类,inheritance,ios7,selector,Inheritance,Ios7,Selector,我很感谢你的指导。我有一个简单的核心数据结构: Datum <———————————————-- Model ===== ===== dataComment lastUpdate name ... 及 我使用以下代码检索数据对象: SEL selectorForData = NSSelectorFromString(lclIn

我很感谢你的指导。我有一个简单的核心数据结构:

Datum <———————————————-- Model
=====                    =====
dataComment              lastUpdate
                         name
                         ...

我使用以下代码检索数据对象:

SEL selectorForData = NSSelectorFromString(lclInst.fieldName);
id lclObjectForData = [self.theObjectToEdit performSelector:selectorForData]; 
其中lclInst.fieldName是“name”、“lastUpdate”或“dataComment”。“name”和“lastUpdate”解析正确,但“dataComment”解析不正确(即使模型从数据继承)。为了解决这个问题,我尝试尽可能接近模型类来解决这个问题。此代码紧跟在上面的代码示例之后:

if (!lclObjectForData)
{
    id lclStuff = [(Model*)(self.theObjectToEdit) resolveLostSelector:selectorForData ];
}
这是resolveLostSelector的代码:

-(id) resolveLostSelector: (SEL) aSelector
{
    id lclSel = [super forwardingTargetForSelector:aSelector];
    NSLog(@"resolution of SEL: %@", [[lclSel class] description]);
    return lclSel;
}
它无法解决任何问题

问题:
(1) 我不能轻易地将代码放入模型类,因为它是由核心数据生成的,所以我将其放入Model+ModelExt类中。该类知道“dataComment”的所有内容,如果我直接将代码放入该方法中,它可以为我解析。如果这不是获取模型的正确方法,那么是什么

(2) 我不知道如何从“子”部分(本例中为模型)获取对象的“父”部分(本例中为基准)。我用了“超级”,但那可能不正确。通常,我只说self.name和self.dataComment,而不考虑它们之间的假定边界,在解析选择器时,该边界似乎都是真实的

(3) 我是否应该将这种方法打包并将“dataComment”放入从数据继承的每个类中


再次感谢您的指导。另外,如果有人在这上面贴上了“forwardingTargetForSelector”的标签,其他人会很感激的。

我可能遗漏了一些东西,但你不能只使用
[coredataobject valueForKey:lclInst.fieldName]
?并且你可以很容易地将东西放入
NSManagedObject
子类中,要么向XCode生成的子类添加代码,要么使用一个类别(考虑到
Model+ModelExt
语法,这实际上似乎就是您正在做的事情)
if (!lclObjectForData)
{
    id lclStuff = [(Model*)(self.theObjectToEdit) resolveLostSelector:selectorForData ];
}
-(id) resolveLostSelector: (SEL) aSelector
{
    id lclSel = [super forwardingTargetForSelector:aSelector];
    NSLog(@"resolution of SEL: %@", [[lclSel class] description]);
    return lclSel;
}