我有一个名为getEarthquake()
的函数,它使用SwiftyJSON解析JSON并将所有有组织的信息(例如title
,magnitude
和time
)返回到{ {1}}调用了NSMutableArray
。
info
我创建了另一个名为var info = NSMutableArray()
func getEarthquake(completion: (results : NSMutableArray) ->Void) {
DataManager.getEarthquakeDataFromFileWithSuccess {
(data) -> Void in
let json = JSON(data: data)
if var JsonArray = json.array {
JsonArray.removeAtIndex(0)
for appDict in JsonArray {
var mag: String? = appDict["mag"].stringValue
var title: String? = appDict["title"].stringValue
var time: String? = appDict["time"].stringValue
var information = AppModel(title: title, magnitude: mag, time1: time)
info.addObject(information)
// info.removeRange(3...48)
completion(results: info)
}
}
}
}
的函数,该函数调用getEarthquake2()
并检索getEarthquake()
。在info
我希望它仅返回getEarthquake2()
,即title1
。但是,当我返回时,我的尝试只会导致String
为title1
。
nil
在func getEarthquake2()->String? {
var title1: String?
getEarthquake{ (info) in
var title = info[0].title
title1 = title
}
return title1
}
成功返回getEarthquake2()
并且不返回nil后,有人可以指导我朝着正确的方向前进吗? (我确定这不是title1
为零的问题,因为它会在Info
结束时填充。)
我的AppModel.swift文件,我可以轻松地组织我的代码:
getEarthquake()
我调用Web服务的DataManager.swift文件:
import Foundation
class AppModel: NSObject, Printable {
let title: String
let magnitude: String
let time1: String
override var description: String {
return "TITLE: \(title), TIME: \(time1), MAG: \(magnitude)"
}
init(title: String?, magnitude: String?, time1: String?) {
self.title = title ?? ""
self.time1 = time1 ?? ""
self.magnitude = magnitude ?? ""
}
}
答案 0 :(得分:0)
在getEarthquake2
中,您忘记将对象投射到AppModel
:
func getEarthquake2() -> String? {
var title1: String?
getEarthquake { info in
let title = (info[0] as! AppModel).title
title1 = title
}
return title1
}