В моем проекте я создал общедоступный класс для обработки моего сетевого интерфейса для запросов данных (JSON, изображения и т. д.). Функция внутри класса использует Alamofire для установления сетевого подключения и загрузки файла JSON.
Класс и функция ниже:
import Foundation
import Alamofire
public class DataConnectionManager {
public class func getJSON(AppModule:String, callback:(Int) -> Void) -> Void {
switch(AppModule) {
case "Newsfeed":
Alamofire.request(.GET, "http://some-site.com/api/", encoding: .JSON).responseJSON { (_, _, JSONData, _) in
if JSONData != nil {
jsonHolder.jsonData = JSONData!
print("start")
callback(1)
}
else {
callback(0)
}
}
break
default:
break
}
}
}
Я вызываю функцию в своем проекте, как показано ниже:
DataConnectionManager.getJSON("Newsfeed", callback: { (intCheck : Int) -> Void in
if intCheck == 1 {
println("Success")
}
else {
println("Failure")
}
})
Приложение запускается без каких-либо ошибок, однако мои проверки работоспособности не распечатываются. На самом деле, когда я делаю это таким образом, Alamofire.request также не захватывает канал JSON.
Я иду в правильном направлении с этим?
JSONData
выглядит как тип, тогда какjsonData
выглядит как переменная. Я знаю, что это немного двусмысленно в случае переменной, которая начинается с аббревиатуры, но Swift, в большей степени, чем большинство языков, имеет ВСЕ типы в верхнем регистре и ВСЕ переменные в нижнем регистре. - person exists-forall   schedule 13.01.2015responseJSON
, если она есть. Попробуйте разобрать его вместо(_, _, JSONData, error)
if error != nil
. - person Ian MacDonald   schedule 13.01.2015break
излишни. Swift ломается автоматически. Вам нужноfallthrough
, чтобы получить обычное C-поведение. - person qwerty_so   schedule 13.01.2015