【发布时间】:2015-05-26 02:37:10
【问题描述】:
我有一个使用 Swifty JSON 的函数。它从我的 DataManager 文件中检索数据,该文件从这个 JSON 字符串 http://www.kuakes.com/json/ 中获取信息 我在 tableViewController 文件中的函数将 JSON 分解为我需要的信息,如标题、id、时间等。我的问题是标题条目包含位置和更丰富的比例,我需要将其分解为两个单独的字符串 -一个是规模,一个是位置。 喜欢这个条目:{"id":153355,"title":"mb 4.6 AZERBAIJAN","link":"http://www.emsc-csem.org/Earthquake/earthquake.php?id=443813","来源":"http://www.kuakes.com","north":0,"west":0,"lat":40.799999,"lng":46.919998,"depth":10,"mag":4.6 ,"时间":"2015-05-26 01:20:35 UTC","时间戳":1432603235}
格式化:
{
"id":153355,
"title":"mb 4.6 AZERBAIJAN",
"link":"http:\/\/www.emsc-csem.org\/Earthquake\/earthquake.php?id=443813",
"source":"http:\/\/www.kuakes.com",
"north":0,
"west":0,
"lat":40.799999,
"lng":46.919998,
"depth":10,
"mag":4.6,
"time":"2015-05-26 01:20:35 UTC",
"timestamp":1432603235
}
"mb 4.6 AZERBAIJAN",
func getEarthquakeInfo(completion: (results : NSArray?) ->Void ){
DataManager.getEarthquakeDataFromFileWithSuccess {
(data) -> Void in
let json = JSON(data: data)
if let JsonArray = json.array {
for appDict in JsonArray {
var ids: String? = appDict["id"].stringValue
var title: String? = appDict["title"].stringValue
var time: String? = appDict["time"].stringValue
var lattitude: String? = appDict["lat"].stringValue
var longitude: String? = appDict["lng"].stringValue
var information = AppModel(idEarth: ids, title: title, time: time, lat: lattitude, lng: longitude)
var title2strings = title!.componentsSeparatedByString(" - ")
var scale = title2strings[0]
var location = title2strings[1] // Error: Array index out of range
println("\(scale)")
self.info.append(information)
completion(results: self.info)
}
}
}
}
如果我在不输入位置的情况下运行程序,它会很好地打印比例。但是,如果某些条目在比例和位置之间没有用“ - ”分隔,它会给我整件事。前任。 M 3.1 希腊南部我想这可能是我在var location = title2strings[1] 收到错误的原因
如果有人可以帮助我解决这个问题,我将不胜感激。
更新:我的最终目标是将所有标题条目分成比例和位置,即使其中一些没有用“-”分隔。我不能遗漏那些没有分开的。如果有人可以建议一种方法来做到这一点,那将有很大帮助。
【问题讨论】:
-
首先,格式化 JSON。网络上有几个网站可以为您执行此操作,如果您格式化它会更容易理解。