从 NSDictionary 解析 NSString 值返回 nil
Posted
技术标签:
【中文标题】从 NSDictionary 解析 NSString 值返回 nil【英文标题】:Parsing a NSString value from NSDictionary returns nil 【发布时间】:2014-01-16 13:47:14 【问题描述】:我正在尝试将 NSDictionary 中的值解析为本地数据模型。
这是字典的内容。
Printing description of userProfile:
"created_at" = "2014-01-16T09:08:03.012Z";
"first_name" = FirstName;
id = 74;
"last_name" = LastName;
phone = 09876543232;
photo = "<null>";
"updated_at" = "2014-01-16T12:40:18.143Z";
"user_id" = 84;
这是我用来解析字符串的:
self.profileId = [[userProfile objectForKey:@"id"] intValue];
self.firstName = (NSString*)[userInfo objectForKey:@"first_name"];
self.lastName = (NSString*)[userInfo objectForKey:@"last_name"];
self.phoneNumber = (NSString*)[userInfo objectForKey:@"phone"];
这将在最后三个字段上返回 nil。但是,如果我使用这种方法来解析数据,它实际上会起作用。
NSArray*keys=[userProfile allKeys];
self.firstName = [userProfile objectForKey:[keys objectAtIndex:3]];
知道为什么会这样吗?
【问题讨论】:
会不会和打字错误有关?在第一个调用中,您从对象“userProfile”中检索数据,但在其他三个调用中,您访问对象“userInfo” 将 userInfo 更改为 userProfile... 你可以试试[userInfo objectForKey:@"\"first_name\""]
吗?
@rist 就是这样......我真是个白痴。非常感谢大家!
@C_X 是的......就是这样。
【参考方案1】:
您正在此处访问“userProfile”
self.profileId = [[userProfile objectForKey:@"id"] intValue];
但在此处访问“用户信息”
self.firstName = (NSString*)[userInfo objectForKey:@"first_name"];
self.lastName = (NSString*)[userInfo objectForKey:@"last_name"];
self.phoneNumber = (NSString*)[userInfo objectForKey:@"phone"];
这是一个错字还是您错误地使用了一个名为“userInfo”的对象?
【讨论】:
以上是关于从 NSDictionary 解析 NSString 值返回 nil的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 数组与字典(NSArray & NSDictionary)
NSDictionary - 从返回的 JSON 服务中解析项目
Objective C 将 NSDictionary valueForKeyPath 转换为字符串
从 NSDictionary 解析 NSString 值返回 nil