我遇到了严重的性能问题,使用我们的API从SwiftyJson解析JSON并填充核心数据.
这些数据是用Alamofire下载的,它运行得很好,但用SwiftyJson解析json的速度很慢.为了查看库是否确实存在问题,我重写了在解析数据的众多地方之一的json解析.在下面的代码中,我正在分析大约400个旅游景点之一的开放时间.
查看这些屏幕截图中的差异,7,7秒到185毫秒:


Swifty方式:
let openDescription:String = json["OpeningHours"]["OpeningHoursGenericExceptions"].string!
let monOpen:[String] = json["OpeningHours"]["Monday"]["From"].string!.componentsSeparatedByString(":")
let monClose:[String] = json["OpeningHours"]["Monday"]["To"].string!.componentsSeparatedByString(":")
let tueOpen:[String] = json["OpeningHours"]["Tuesday"]["From"].string!.componentsSeparatedByString(":")
let tueClose:[String] = json["OpeningHours"]["Tuesday"]["To"].string!.componentsSeparatedByString(":")
let wedOpen:[String] = json["OpeningHours"]["Wednesday"]["From"].string!.componentsSeparatedByString(":")
let wedClose:[String] = json["OpeningHours"]["Wednesday"]["To"].string!.componentsSeparatedByString(":")
let thuOpen:[String] = json["OpeningHours"]["Thursday"]["From"].string!.componentsSeparatedByString(":")
let thuClose:[String] = json["OpeningHours"]["Thursday"]["To"].string!.componentsSeparatedByString(":")
let friOpen:[String] = json["OpeningHours"]["Friday"]["From"].string!.componentsSeparatedByString(":")
let friClose:[String] = json["OpeningHours"]["Friday"]["To"].string!.componentsSeparatedByString(":")
let satOpen:[String] = json["OpeningHours"]["Saturday"]["From"].string!.componentsSeparatedByString(":")
let satClose:[String] = json["OpeningHours"]["Saturday"]["To"].string!.componentsSeparatedByString(":")
let sunOpen:[String] = json["OpeningHours"]["Sunday"]["From"].string!.componentsSeparatedByString(":")
let sunClose:[String] = json["OpeningHours"]["Sunday"]["To"].string!.componentsSeparatedByString(":")
Run Code Online (Sandbox Code Playgroud)
本土方式:
var monOpen:[String] = []
var monClose:[String] = []
var tueOpen:[String] = []
var tueClose:[String] = …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何为新的"高分辨率"手持设备生产可绘制的产品,如Galaxy Nexus,One X,Galaxy S3等,分辨率为1280x720或更高.
我总是尝试制作尽可能少的布局版本.优选地,仅需要一个但有时需要布局长且不长.并使xml足够智能以处理所有设备.但是,只有可绘制的资源能够提供所有不同的分辨率和大小,才有可能.
一切都很顺利,直到新的大手机到来,我发现它们的抽屉很小.还没有来自谷歌的xxhdpi文件夹,所以我一定做错了.
我知道这里禁止提及像素,但你仍然必须使用photoshop或其他一些基于像素的应用来制作drawables.因此,您需要知道制作这些绘图的大小.
这就是我到目前为止所做的:
xhdpi:640x960
hdpi:480x640
mdpi:320x480
ldpi:240x320
问题是,当1280x720设备从xhdpi文件夹中获取drawable时,事情开始看起来很糟糕,图像太小而且它们之间的空间太大.
你的可绘制源文件是什么?xhdpi在1028x720?这给我带来了较低分辨率的版本.
我有一个广告公司在我的脖子上呼吸,想知道为什么它看起来不像iPhone那样完美......
android ×1
drawable ×1
ios ×1
json ×1
photoshop ×1
resolution ×1
screens ×1
swift ×1
swifty-json ×1