如何在Swift中使用JSON中的值大于2147483647来解析Int

时间:2016-08-23 18:23:45

标签: ios json swift

我有一些看起来像这样的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

所以问题很清楚但是如何克服它?

2 个答案:

答案 0 :(得分:1)

Int可以是32位或64位整数,具体取决于平台。 正如评论中已经说过的那样,您需要Int64UInt64来存储 值>所有平台上的2147483647。

因此,您无法直接从AnyObject投射到Int64 转换是通过NSNumber

guard let userId = (dict["id"] as? NSNumber)?.longLongValue  else { return }

对于Swift 3,请将longLongValue替换为int64Value

答案 1 :(得分:-1)

尝试将其解析为bDoubleDouble大得多。

示例:

Int