我有一些看起来像这样的JSON字典:
{
biography = "";
externalUrl = "";
followersCount = 467;
followingsCount = 428;
fullName = dima;
hasAnonymousProfilePicture = 1;
id = 2673580202;
isBusiness = 0;
isPrivate = 0;
mediaCount = 0;
picture = "http://scontent.cdninstagram.com/t51.2885-19/11906329_960233084022564_1448528159_a.jpg";
username = "kmr.dma";
}
所以我正在解析' id'像这样的参数:
guard let userID = array["id"] as? Int else {
return
}
我得到的价值如下:-1621387094
多数民众赞成因为Int.max()是2147483647
而我的身份证是2673580202
所以问题很清楚但是如何克服它?
答案 0 :(得分:1)
Int
可以是32位或64位整数,具体取决于平台。
正如评论中已经说过的那样,您需要Int64
或UInt64
来存储
值>所有平台上的2147483647。
因此,您无法直接从AnyObject
投射到Int64
转换是通过NSNumber
:
guard let userId = (dict["id"] as? NSNumber)?.longLongValue else { return }
对于Swift 3,请将longLongValue
替换为int64Value
。
答案 1 :(得分:-1)
尝试将其解析为b
。 Double
比Double
大得多。
示例:
Int