从JSON响应对象获取值

时间:2014-04-06 10:08:20

标签: ios arrays json

我正在制作一个JSON请求,并希望从其中一个字段中获取一个int值。

{
"currentPage": 1,
"numberOfPages": 5,
"totalResults": 234,
"data": [],
"status": "success"
}

我想获得numberOfPages的值。我的代码如下

_pages = [responseObject objectForKey:@"numberOfPages"];
_numberOfPages = (int)_pages;
NSLog(@"%d", _numberOfPages);

而不是numberOfPages的值,NSLog是150198512.有人可以解释一下原因吗?在索引0处尝试对象会导致其崩溃。

1 个答案:

答案 0 :(得分:2)

_pages应该是您定义中的NSNumber。您无法转换它以获取基本类型,您必须请求基元类型。 _numberOfPages应为NSInteger(或许NSUInteger),您应该获得以下值:

_numberOfPages = [_pages integerValue];

除此之外:考虑使用self.pagesself.numberOfPages而不是直接访问实例变量(它可以帮助您将来进行维护)。

使用self.pages会调用pages(或self.pages = xxx调用setPages:xxx)方法来获取(或设置)实例变量的内容(_pages)。因此,如果您有该方法的自定义实现,它将被调用,您的自定义逻辑将运行。如果您只是使用_pages,那么它就不会被调用,如果您需要进行更改,则需要稍后进行大量编辑。

您最好的选择是在您想要更新属性时使用self.XXX = xxx,并在需要时使用XXX xxx = self.xxx

这不是一条坚硬而快速的规则。 Interesting discussion here