我很感激你对此的指导。我有一个简单的核心数据结构:
Datum <———————————————-- Model
===== =====
dataComment lastUpdate
name
...
也就是说,Model继承自Datum。生成的代码:
@interface Datum : NSManagedObject
@property (nonatomic, retain) NSString * dataComment;
@end
和
@interface Model : Datum
@property (nonatomic, retain) NSDate * lastUpdate;
@property (nonatomic, retain) NSString * name;
我使用以下代码检索数据对象:
SEL selectorForData = NSSelectorFromString(lclInst.fieldName);
id lclObjectForData = [self.theObjectToEdit performSelector:selectorForData];
其中lclInst.fieldName是&#34; name&#34;,&#34; lastUpdate&#34;或&#34; dataComment&#34;。 &#34;名称&#34;和&#34; lastUpdate&#34;正确解决,但&#34; dataComment&#34;没有(即使模型继承自Datum)。为了解决这个问题,我尝试尽可能接近Model类来解决问题。代码就在上面的代码示例之后:
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类中,因为它是由Core Data生成的,所以我将它放入Model + ModelExt类中。所述类知道所有关于&#34; dataComment&#34;,如果我将代码直接放在方法中,它可以解决它。如果这不是获取Model的正确方法,那是什么?
(2)我不知道如何到达父母&#34;部分(在本例中为基准)来自&#34;孩子的对象&#34; part(模型,在这种情况下)。我使用&#34; super&#34;,但这可能不正确。通常,我只是说self.name和self.dataComment而不考虑它们之间的假设边界,在解析选择器时边界似乎是真实的。
(3)我是否应该采用这种方法并放入&#34; dataComment&#34;进入从Datum继承的每个类?
再次,非常感谢您的指导。此外,如果有声望的人附加了标签&#34; forwardingTargetForSelector&#34;对此。