我一直坚持将 NSDictionary 写入对象进程,我确信这个问题和我想象的一样简单,但如果能得到助手就太好了。这是我的代码:
我的自定义对象:
@interface User : NSObject
@property (nonatomic, retain) NSString *cId;
@property (nonatomic, retain) NSString *firstName;
@property (nonatomic, retain) NSString *lastName;
....
-(instancetype) initWithParameters:(NSDictionary*) parameters;
@end
#import "User.h"
@implementation User
-(instancetype) initWithParameters:(NSDictionary*) parameters
{
self = [super init];
if (self) {
[self setParameters:parameters];
}
return self;
}
- (void) setParameters:(NSDictionary*) parameters{
_cId = parameters[@"cId"];
_firstName = parameters[@"first_name"];
_lastName = parameters[@"last_name"];
....
}
及写作过程:
id userObjects = [resultData objectForKey:@"data"];
NSMutableArray* mUsers = [[NSMutableArray alloc] init];
for (NSDictionary* userParameters in userObjects) {
User *user = [[User alloc] initWithParameters:userParameters];
[mUsers addObject:user];
}
userObjects - NSArray 从服务器数据的 JSON 对象中获取。
问题是:什么都没有发生,初始化后用户对象仍然是空的,然后我尝试了 - setValuesForKeysWithDictionary 在我调用与字典中的键相同的变量并且没有任何改变之后。
谁能告诉我我做错了什么?谢谢!
最佳答案
我相信您认为这些对象未初始化,因为您在每个 User
对象旁边看到 0 个键/值对
。
您的代码看起来不错,我认为一旦您像这样实现[NSObject description]
(或[NSObject debugDescription]
),事情就会发生变化:
- (NSString *)description
{
return [NSString stringWithFormat:@"cId=%@, firstName=%@, lastName=%@",
_cId, _firstName, _lastName];
}
关于ios - 无法将 NSDictionary 参数写入自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890502/