[英]How do you get and set a class property across multiple functions in Objective-C?
[英]How do I get the value from a class property in Objective-C?
我想使用反射從 objective-c class 獲取變量值。
company.h 看起來像
@interface Company : NSObject {
}
@property (nonatomic, retain) NSString* phone;
- (NSString*) getPropertyValueByName: (NSString*) paramName;
company.m 看起來像
@implementation Company
@synthesize phone;
- (NSString*) getPropertyValueByName: (NSString*) paramName
{
id me = self;
value = [me objectForKey: paramName];
return value;
}
@end
我正在使用這個:
Company* comp = [Company new];
comp.phone = @"+30123456";
NSString* phone = comp.getPropertyValueByName(@"phone");
我得到的是一個例外:
-[Company objectForKey:]: unrecognized selector sent to instance
使用Key-Value-Coding有一種更簡單的方法。
已經有一種方法可以通過傳遞字符串來獲取屬性的值:
-(id)valueForKey:(NSString *)keyName;
您不需要為此編寫自己的方法。
那應該是 valueForKey 而不是 objectForKey。 objectForKey 是一個 NSDictionary 實例方法。 除此之外,您的代碼中還有一個潛在的錯誤。 您在上述方法中的返回類型是字符串,但在返回之前您不會將其轉換為 NSString。即使您確定它總是會返回一個字符串,避免任何疑慮也是一個好習慣。 當聲明一個 NSString 屬性時,你應該復制它而不是保留它。 而且,如果您可以輕松地說:聲明“我”變量有什么意義:
[self valueForkey:paramName];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.