在iPhone上调试分析JSON值与模拟器的差异

问题描述:

我遇到了一个问题,当我在我的iPhone上运行应用程序时,我的表视图正在填充看起来像中文字符的字符。但是,当我通过模拟器运行应用程序时,我得到了预期的(英文)结果。以下是该问题的截图。在iPhone上调试分析JSON值与模拟器的差异

在模拟器中运行 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

从APP输出上iPhone Output from app running on iPhone

运行我想这可能是一个本地化设置或一些地方在手机上,但不知道如何查明是否属实。我尝试从手机中删除应用程序并重新安装,这也没有帮助。

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

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

+1

设备未设置为其他语言,但无论出于何种原因,它都在设置>常规>语言和地区下添加了日语。我的猜测是我的一个孩子拿到了我的手机,并偶然添加了这个。感谢您指点我正确的方向。 – dstepan

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