【发布时间】:2019-10-25 03:51:54
【问题描述】:
我有一个字典,其中包含来自 REST 端点的用户数据。这是我的用户类
#import <Foundation/Foundation.h>
@interface User : NSObject
@property (strong, nonatomic) NSString *uid;
@property (strong, nonatomic) NSString *email;
@property (strong, nonatomic) NSString *firstName;
@property (strong, nonatomic) NSString *lastName;
@property (assign, nonatomic) int status;
@end
我有一个设置所有属性的方法
/*
* set properties
*/
- (void)setPropertiesWithDictionary:(NSDictionary *)dictionary{
for(NSString *key in dictionary){
object_setIvar(self,
class_getInstanceVariable([self class], [[@"_" stringByAppendingString:key] UTF8String]),
dictionary[key]);
}
}
而不是做类似的事情
[user setUid:@dictionary[@"uid"]];
我想这样调用我的方法
[user setPropertiesWithDictionary: dictionary];
只是想知道以这种方式实现object_setIvar 是否可以。如果不是 - 如果您能解释原因,那就太好了。提前致谢。
【问题讨论】:
-
为什么你认为它不会好?
-
我还没有看到任何这样的例子。更像是变量变量的概念。基本上只是在玩弄和推动 Objective-C 的界限。
标签: ios objective-c objective-c-runtime