1
這可能是一個可笑的問題,但我有一個這樣的方法在我的視圖控制器:訪問哪些發送者的財產被傳遞給方法
[self registerProperty:self.currentUser];
,並在registerProperty:
實施,我想獲取字符串「currentUser」。
我這樣做是因爲我想觀察視圖控制器「currentUser」的屬性,而不是實際的用戶對象,所以我可以攔截setter。
在我檢查視圖控制器的所有屬性的列表,Objective-C的運行時和檢查,如果該屬性的值等於currentUser對象的時刻:
-(void)registerProperty:(id)property
{
for (NSString *propertyName in [self allPropertiesOfClass:[property class]])
if ([property isEqual:[self valueForKey:propertyName]])
NSLog(@"The property passed into the method is %@", propertyName);
}
與此問題是我可能有兩個屬性都包含相同的用戶對象,在這種情況下,他們中的任何一個都會通過該測試。我怎麼能解決這個問題?
啊是的,但問題是我需要確定屬性的名稱,即。我需要一種方法將'self.arbitraryProperty'轉換爲字符串'@「arbitraryProperty」'。我以前見過這個,例如[libextobjc](https://github.com/jspahrsummers/libextobjc/blob/master/extobjc/EXTKeyPathCoding.h),但我完全不理解它是如何工作的。 – ntesler 2013-02-17 05:00:59
調用者應該通過它。調用者知道屬性名稱。你不應該使用'[self registerProperty:self.currentUser]',你應該使用像'[self registerObject:self property:@「currentUser」]''。 – 2013-02-17 05:08:05