iOS:将数据传递给另一个class
iOS: pass data to another class
我的 class 名为 "Service",在里面我用 Alamofire 做了很多 GET/POST 请求,请求 ID 为 this
的一个例子
func requestDocuments(){
request(.POST, "http://example.com/json/docs")
.responseJSON { (_, _, JSON, error) in
if error == nil{
var response = JSON as NSArray
println("array document: \(response)")
//**** HERE I WANT PASS VALUE TO MY VIEW CONTROLLER
}
else{
}
}
}
来自我的 viewcontroller:
let service = Service.sharedInstance
service.requestDocuments()
我能用什么?委托方法?或者是什么?
swift 中的最佳解决方案是什么?
是的。有 3 种主要方法可以做到这一点。这个想法是你想向 class 发送一个呼叫,在这种情况下,用于网络,并让它稍后返回并做一些事情。
委托+协议非常适合这个:
http://iosdevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html
积木也是如此
另一种流行的方式是 KVO,但这对您的示例来说并不理想。
我会在swift,
中使用闭包
例如
class Service{
func requestDocuments(completion:(response:AnyObject)->()){
//After network is done
completion(response:data)
}
}
那这里就用
service.requestDocuments { (response) -> () in
//Here you can get response async
}
func requestDocuments(completion:(data:NSArray?)){
request(.POST, "http://example.com/json/docs")
.responseJSON { (_, _, JSON, error) in
if error == nil{
var response = JSON as NSArray
println("array document: \(response)")
//**** HERE I WANT PASS VALUE TO MY VIEW CONTROLLER
completion(data:response)
}
else{
completion(data:nil)
}
}
}
var reqDoc = requestDocuments(){ (data) -> Void in
if let _data = data {
dispatch_async(dispatch_get_main_queue()) {
//Do something with data
}
}
}
我认为闭包是最好的解决方案。
使用委托是最好的方法。
请参阅下面的示例,其中演示了委派方法
AFNetworking 2.0 - How to pass response to another class on success
另一种方法是 NSNotification
我的 class 名为 "Service",在里面我用 Alamofire 做了很多 GET/POST 请求,请求 ID 为 this
的一个例子func requestDocuments(){
request(.POST, "http://example.com/json/docs")
.responseJSON { (_, _, JSON, error) in
if error == nil{
var response = JSON as NSArray
println("array document: \(response)")
//**** HERE I WANT PASS VALUE TO MY VIEW CONTROLLER
}
else{
}
}
}
来自我的 viewcontroller:
let service = Service.sharedInstance
service.requestDocuments()
我能用什么?委托方法?或者是什么? swift 中的最佳解决方案是什么?
是的。有 3 种主要方法可以做到这一点。这个想法是你想向 class 发送一个呼叫,在这种情况下,用于网络,并让它稍后返回并做一些事情。
委托+协议非常适合这个:
http://iosdevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html
积木也是如此
另一种流行的方式是 KVO,但这对您的示例来说并不理想。
我会在swift,
中使用闭包例如
class Service{
func requestDocuments(completion:(response:AnyObject)->()){
//After network is done
completion(response:data)
}
}
那这里就用
service.requestDocuments { (response) -> () in
//Here you can get response async
}
func requestDocuments(completion:(data:NSArray?)){
request(.POST, "http://example.com/json/docs")
.responseJSON { (_, _, JSON, error) in
if error == nil{
var response = JSON as NSArray
println("array document: \(response)")
//**** HERE I WANT PASS VALUE TO MY VIEW CONTROLLER
completion(data:response)
}
else{
completion(data:nil)
}
}
}
var reqDoc = requestDocuments(){ (data) -> Void in
if let _data = data {
dispatch_async(dispatch_get_main_queue()) {
//Do something with data
}
}
}
我认为闭包是最好的解决方案。
使用委托是最好的方法。 请参阅下面的示例,其中演示了委派方法
AFNetworking 2.0 - How to pass response to another class on success
另一种方法是 NSNotification