我正在制作一个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处尝试对象会导致其崩溃。
答案 0 :(得分:2)
_pages
应该是您定义中的NSNumber
。您无法转换它以获取基本类型,您必须请求基元类型。 _numberOfPages
应为NSInteger
(或许NSUInteger
),您应该获得以下值:
_numberOfPages = [_pages integerValue];
除此之外:考虑使用self.pages
和self.numberOfPages
而不是直接访问实例变量(它可以帮助您将来进行维护)。
使用self.pages
会调用pages
(或self.pages = xxx
调用setPages:xxx
)方法来获取(或设置)实例变量的内容(_pages
)。因此,如果您有该方法的自定义实现,它将被调用,您的自定义逻辑将运行。如果您只是使用_pages
,那么它就不会被调用,如果您需要进行更改,则需要稍后进行大量编辑。
您最好的选择是在您想要更新属性时使用self.XXX = xxx
,并在需要时使用XXX xxx = self.xxx
。
这不是一条坚硬而快速的规则。 Interesting discussion here