कहो मैं अपने वर्ग हैवैरिएबल नाम से स्ट्रिंग प्राप्त करने के लिए वैसे भी?
@interface Person : NSObject { NSString *name; }
मैं अपने वर्ग के भीतर
Person *person = [[Person alloc] init];
NSLog(@"Name of variable %s\n", _NameofVariable_(person->name));
जवाब के लिए धन्यवाद NSString के नाम प्राप्त करने की आवश्यकता है, यहाँ समाधान मैं उत्तर से आया है
//returns nil if property is not found
-(NSString *)propertyName:(id)property {
unsigned int numIvars = 0;
NSString *key=nil;
Ivar * ivars = class_copyIvarList([self class], &numIvars);
for(int i = 0; i < numIvars; i++) {
Ivar thisIvar = ivars[i];
if ((object_getIvar(self, thisIvar) == property)) {
key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
break;
}
}
free(ivars);
return key;
}
आप भी 'मुक्त (ivars)', वरना आप सरणी रिसाव जाएगा चाहिए। –
अच्छी पकड़, इसे प्रतिबिंबित करने के लिए अपडेट किया गया। – hacksignal
क्या यह कक्षा में किसी भी संपत्ति का पहला नाम वापस नहीं करेगा जो आपके द्वारा पारित मूल्य से मेल खाता है? उदाहरण: https://gist.github.com/robskillington/684796bae2dd95592919 – rob