0

我在一个中心点(班级)工作,在那里我的数据被请求和检索。Swift - Grand Central Dispatch Class

这个类可以从任何观点被称为:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let group = dispatch_group_create() 
    var data = RestApiManager(group) 
    dispatch_group_notify(group, dispatch_get_main_queue()) { 
     return data 
    } 
} 

class RestApiManager { 

    let user = "user" 
    let password = "password" 

    var result: JSON = [] 

    init(group) { 

     dispatch_group_enter(group) 
     Alamofire.request(.GET, "http://example.com/api/") 
      .authenticate(user: user, password: password) 
      .responseJSON { _, _, result in 
       switch result { 
       case .Success(let data): 
        self.result[] = JSON(data) 
       case .Failure(_, let error): 
        print("Request failed with error: \(error)") 
       } 
       dispatch_group_leave(group) 
     } 
    } 
} 

但初始化类时,它已经失败。

任何人都可以帮助我设计一个合适的方式?

感谢和问候

回答

1
import XCPlayground 

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true 

import Foundation 

class C { 
    var txt: String = "start" 
    init(group: dispatch_group_t) { 
     dispatch_group_enter(group) 
     print(txt) 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {() -> Void in 
      usleep(200000) 
      self.txt = "end" 
      print(self.txt) 
      dispatch_group_leave(group) 
     } 
    } 
} 

func f() { 
    let group = dispatch_group_create() 
    let c = C(group: group) 
    dispatch_group_notify(group, dispatch_get_main_queue()) {() -> Void in 
     print("notify: \(c) created") 
    } 
} 

f() 
print("continue running ...") 

这个工作对我来说没有任何麻烦。你写过 “但是初始化这个类时它已经失败了。” 这意味着什么?详细解释你的'失败'... 顺便说一下,我不明白你如何从组通知处理程序返回你的数据(返回数据)......(通常来自任何异步代码)

相关问题