2013-11-01 31 views
0

我想從一個屬性中,我有一個字符串的名稱,但需要它的指針設置一個值。 (我相信)獲取屬性指針,當你有一個字符串的名字

我:

unsigned int propCount = 0; 
objc_property_t *properties = class_copyPropertyList([self class], &propCount); 

for(int idx = 0; idx < propCount; idx++) { 
    objc_property_t prop = *(properties + idx); 
    NSString *key = @(property_getName(prop)); 
    NSString *key2 = @(property_getAttributes(prop)); 

    NSLog(@"%@::%@", key,key2); 

    if ([key2 rangeOfString:@"UITextField"].location != NSNotFound) { 
     NSLog(@"is a uitextfield"); 

     [self.form setValue:self.comments forKey:key]; 
    } 
} 

鍵=「意見」

而不是使用self.comments我想使用類似self.key,但我知道我不能這樣做。我怎樣才能做到這一點?

回答

0

解決方法是使用鍵值編碼。您可以用[self valueForKey:key]替換對self.comments的引用,其中key@"comments"。如果你想要做一個簡單的檢查,以確保他們在相同的內存地址指向,使用此:

NSLog(@"%p %p", [self valueForKey:key], self.comments); 
+0

我認爲這會工作,但我得到'終止應用程序由於未捕獲的異常「NSUnknownKeyException」,原因:'[<調查0x816b110> setValue:forUndefinedKey:]:實體調查不是關鍵值編碼兼容關鍵字「評論」。'' – BluGeni

+0

您能向我們展示Survey類的代碼嗎? – neilco

+1

哦,我正指着coredata錯誤的課!感謝您指出了密鑰代碼編碼,這對於解決這個問題非常有幫助。 – BluGeni