iPhone 上的调试解析 JSON 值的方式与模拟器不同
Posted
技术标签:
【中文标题】iPhone 上的调试解析 JSON 值的方式与模拟器不同【英文标题】:Debugging on iPhone Parses JSON Values Differently vs. Simulator 【发布时间】:2016-09-27 13:35:55 【问题描述】:我遇到了一个问题,当我在 iPhone 上运行应用程序时,我的表格视图中填充了看起来是中文字符的内容。但是,当我通过模拟器运行应用程序时,我得到了预期的(英文)结果。下面是问题的截图。
在模拟器中运行
在 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 值的解析方式不同。
模拟器中运行的应用的输出
iPhone 上运行的应用的输出
我认为这可能是本地化设置或手机上的某处,但不知道如何确定是否是这种情况。我已经尝试从手机中删除该应用程序并重新安装,但这也无济于事。
我使用的框架是 Facebook SDK、Alamofire 和 Swifty-JSON,以防它们中的任何一个都可能导致这个奇怪的问题。
【问题讨论】:
【参考方案1】:这通常是 HTTP 请求中 Accept-Language
标头的问题。设备是否设置为另一种语言?如果是这样,它将默认使用该语言。您可以使用NSMutableURLRequest
手动更改标头值并将该值更改为described here。
【讨论】:
该设备未设置为另一种语言,但出于某种原因,它在“设置”>“常规”>“语言和地区”下添加了日语。我的猜测是我的一个孩子抓住了我的手机并意外添加了它。感谢您为我指明正确的方向。【参考方案2】:您将获得不同的本地化版本的数据。在您的示例中-“クイ–ン”是日语Katakana“女王”的音译。 JSON 解析问题不会将罗马文本转换为日语音译,因此您会得到具有不同内容的 JSON。
【讨论】:
以上是关于iPhone 上的调试解析 JSON 值的方式与模拟器不同的主要内容,如果未能解决你的问题,请参考以下文章