从JSON响应中获取值对象
问题描述:
我正在发出JSON请求并希望从其中一个字段获取int值。从JSON响应中获取值对象
{
"currentPage": 1,
"numberOfPages": 5,
"totalResults": 234,
"data": [],
"status": "success"
}
我想获取numberOfPages的值。我的代码如下
_pages = [responseObject objectForKey:@"numberOfPages"];
_numberOfPages = (int)_pages;
NSLog(@"%d", _numberOfPages);
而不是为numberOfPages值时,是的NSLog可以150198512.有人请解释一下为什么?在索引0处尝试对象会导致其崩溃。
答
_pages
应该是您的定义中的NSNumber
。您不能将其转换为原始类型,您必须请求原始类型。 _numberOfPages
应该是一个NSInteger
(或者也许NSUInteger
),你应该得到与价值:
_numberOfPages = [_pages integerValue];
旁白:考虑使用self.pages
和self.numberOfPages
,而不是直接访问实例变量(它可以帮助你在未来的维护) 。
使用self.pages
导致(在呼叫或self.pages = xxx
到setPages:xxx
)到pages
一个呼叫的方法来获得(或设置)该实例变量(_pages
)的含量。因此,如果您有该方法的自定义实现,它将被调用并且您的自定义逻辑将运行。如果您只是使用_pages
,那么它将不会被调用,并且如果您需要进行更改,则需要稍后进行大量编辑。
你最好的选择是当你想要更新一个属性时使用self.XXX = xxx
,当你想要使用它时使用XXX xxx = self.xxx
。
这不是一条硬性规定。 Interesting discussion here。
谢谢! 你能解释一下_varlable和self.variable之间的区别是什么?对不起,我是Obj-C的新手... – user3501590