私はSwiftを使い慣れています。ビューの前にAFNetworkingクラスを初期化する方法を理解しようとすると、読み込まれました。私は、のviewDidLoad前に初期化されませんJSONファイルからクラスでこのviewDidLoadの前にSwiftでAFNEtworkingクラスを初期化するには
var serverAnalytics = ServerAnalytics()
print(serverAnalytics.today)
問題のように格納された変数をのViewControllerからクラスをされてアクセスしています。したがって、プロパティはデフォルト/空白です。 AFNetworkingとSwiftyJSONの使用。
import Foundation
class ServerAnalytics {
let manager = AFHTTPSessionManager()
var today:Double! = 0
var complete:Bool! = false
init(){
manager.GET("http://www.somerandomjsonurl",
parameters: nil,
progress: nil,
success: { (operation: NSURLSessionDataTask,responseObject: AnyObject?) in
if let responseObject = responseObject {
//print("Response: " + responseObject.description)
let json = JSON(responseObject)
self.today = json["salesdata"]["list"][0]["todays_sales"].double!
}
},
failure: { (operation: NSURLSessionDataTask?,error: NSError) in
print("Error: " + error.localizedDescription)
})
}
}
これは正しい考え方です。デリゲートパターン以外のいくつかのソリューションは、NSNotification、subject-observerデザインパターン、反応性のあるココアシグナルを送信することになります(ただし、すでにReactive Cocoaを使用している場合のみですが、この種の問題を解決するにはあまりにも重量があります)、YMMV。私は間違いなく**直接KVOを推奨していません**。最も基本的なアプリ以上のものに対して、それを実行可能なソリューションにするには、あまりにも多くの問題があります。 – fullofsquirrels