从 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

将此数据从 JSON 解析为 NSDictionary [重复]

Swift:解析 JSON,NSDictionary 的 NSDictionary