gpt4 book ai didi

objective-c - NSInteger 不等于 long ?

转载 作者:行者123 更新时间:2023-12-03 17:38:23 24 4
gpt4 key购买 nike

我正在尝试解析 Cocoa 中的一些 json 数据,但我在使用 NSInteger 数据类型时遇到了问题。 json 字符串有一些长值,我分配给 NSInteger 属性。不幸的是,分配的 NSInteger 值与 long 值完全不同。为什么会这样? NSInteger 被定义为 typedef long NSInteger。我可以将 long 值分配给 long 属性,但我只是想知道为什么不能将其分配给 NSInteger。

    -(void)parseData:(NSData*)data
{
NSError*err=nil;
NSDictionary*jsonData=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
_userID=(NSInteger)[jsonData valueForKeyWithoutNSNull:@"id"];
}

_userID 是一个 NSInteger。从字典中检索到的值是一个 long。

最佳答案

您不能简单地将 NSNumber(甚至 NSString)转换为 NSInteger。字典和其他集合类无法存储像 NSInteger 这样的基本类型。

假设您的字典包含数字而不是字符串,那么您需要:

NSNumber *number = [jsonData valueForKeyWithoutNSNull:@"id"];
_userID = [number integerValue];

关于objective-c - NSInteger 不等于 long ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com