gpt4 book ai didi

ios - RxSwift 订阅 block 未调用

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:38 24 4
gpt4 key购买 nike

我正在玩 RxSwift,但我被一个简单的玩具程序困住了。我的程序基本上包含一个模型类和一个 View Controller 。该模型包含一个在异步网络调用后在主队列上更新的可观察对象,viewcontroller 在 vi​​ewDidLoad() 中订阅。 AppDelegate 初始化模型并将其传递给 ViewController 并触发网络请求。

class GalleryModel {

var galleryCount: BehaviorSubject<Int>

init() {
galleryCount = BehaviorSubject.init(value:0)
}

func refresh() {
doAsyncRequestToAmazonWithCompletion { (response) -> AnyObject! in
var counter = 0
//process response
counter = 12

dispatch_async(dispatch_get_main_queue()) {
self.galleryCount.on(.Next(counter))
}
return nil
}
}

class ViewController: UIViewController {

@IBOutlet weak var label: UILabel!

var galleryModel: GalleryModel?

override func viewDidLoad() {
super.viewDidLoad()
galleryModel?.galleryCount.subscribe { e in
if let gc = e.element {
self.label.text = String(gc)
}
}
}
}

class AppDelegate: UIResponder, UIApplicationDelegate {
var galleryModel: GalleryModel?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//do amazon setup
galleryModel = GalleryModel()
if let viewController = window?.rootViewController as? ViewController {
viewController.galleryModel = GalleryModel()
}
return true
}

func applicationDidBecomeActive(application: UIApplication) {
galleryModel?.refresh()
}

标签只更新了一个,显示为“0”。我预计标签会更新两次,在第一次更新后显示“0”,在处理网络请求后第二次更新后显示“12”。 dispatch_async block 中的断点被击中,但 galleryCount 似乎失去了它的观察者。有人知道发生了什么或如何调试吗?

最佳

最佳答案

以防万一有人感兴趣。这是一个重构错误,在重命名变量后我停止将可观察对象传递给 ViewController。相反,我创建了一个新的...... facepalm

关于ios - RxSwift 订阅 block 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32825795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com