iPhone上的调试解析JSON值与模拟器的不同

时间:2016-09-27 13:35:55

标签: ios iphone swift swifty-json

我遇到的问题是,当我在iPhone上运行应用程序时,我的表格视图会填充看起来像汉字的内容。但是,当我通过模拟器运行应用程序时,我得到了预期的(英语)结果。以下是该问题的屏幕截图。

在模拟器中运行 Running in Simulator

在iPhone上运行 Running on iPhone

以下是填充对象的代码

private func populateArtists(_ maxRecordsToPopulate: Int, json: JSON) {

    let artists = json["artists"]["items"]

    for i in 0 ..< artists.count {

        if i < maxRecordsToPopulate {

            let artist = Artist()

            print(artists[i]["name"].string!)

            artist.name = artists[i]["name"].string!
            artist.detailUrl = artists[i]["href"].string!
            artist.id = artists[i]["id"].string!

            self.searchResults.artists.append(artist)

        }

    }

}

当我在内部放置断点时,看起来返回的JSON值的解析方式不同。

在模拟器中运行的应用输出 Output from app running in Simulator

在iPhone上运行的应用输出 Output from app running on iPhone

我认为这可能是一个本地化设置或手机上的某个地方,但不知道如何找出是否属于这种情况。我尝试从手机中删除应用并重新安装,但也没有帮助。

我使用的框架是Facebook SDK,Alamofire和Swifty-JSON,以防任何这些可能导致这个奇怪的问题。

2 个答案:

答案 0 :(得分:2)

通常这是HTTP请求中Accept-Language标头的问题。设备是否设置为其他语言?如果是这样,它将默认使用该语言。您可以使用NSMutableURLRequest手动更改标头值,并将该值更改为described here

答案 1 :(得分:1)

您获得了不同的本地化版本的数据。在你的例子中 - “クイ - ン”是日语Katakana音译“女王”。 JSON解析问题不会将罗马文本转换为日语音译,因此您将获得具有不同内容的JSON。