【发布时间】:2016-03-09 11:35:39
【问题描述】:
我一直坚持将 NSDictionary 写入 Object 进程,我相信这个问题很简单,但如果能得到帮助会很棒。这是我的代码:
我的自定义对象:
@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 在我调用与字典中的键相同的变量并且没有任何改变之后。
谁能告诉我我做错了什么?谢谢!
【问题讨论】:
-
你调试过initWithParameters吗?是否在这种情况下 if (self) {
-
user只是一个局部变量,mUsers是什么?我会避免声明以set开头的方法,因为它可以被视为属性设置器。 -
@Kiran 是的,调试器只是一步一步地移动,没有警告或日志,一切顺利,但变量仍然为空。
-
正如 vadian 所说.. 用户是局部变量。您尝试记录 mUsers。
-
@vadian 函数名在这种情况下并不重要,因为我已经尝试在 init 函数中正确地完成这项工作。 mUsers 就是你可以在上面看到的 NSMutableArray
标签: ios objective-c parsing object nsdictionary