在函数内调用函数并返回字符串

时间:2015-08-03 23:17:22

标签: json swift function

我有一个名为getEarthquake()的函数,它使用SwiftyJSON解析JSON并将所有有组织的信息(例如titlemagnitudetime)返回到{ {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。但是,当我返回时,我的尝试只会导致Stringtitle1

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 ?? ""
    }

}

1 个答案:

答案 0 :(得分:0)

getEarthquake2中,您忘记将对象投射到AppModel

func getEarthquake2() -> String? {
    var title1: String?

    getEarthquake { info in
        let title = (info[0] as! AppModel).title
        title1 = title
    }

    return title1
}