7

Facebook'un KVOController'ını kullanan bir objc uygulamasını Swift'e yüklemeye çalışıyorum. Alternatif ve daha Swiftish yaklaşımı olarak RC3'a bakmaya teşvik oldum. Bazı blogları okudum ve bunu denemeye teşvik ediyorum. Ancak, dokümanlar ve blogların çoğu örnek olarak soketlere ve zamanlayıcılara yoğunlaşıyor gibi görünüyor. Bu yüzden şu anda iki basit soru var:KVO işlerimi RC3 ile nasıl değiştirmeliyim?

1) gibi bir objc parçası Verilen:

[self.KVOController observe: self.site keyPath: @"programs" options: NSKeyValueObservingOptionInitial block:^(id observer, id object, NSDictionary *change) { 
    [self.tableView reloadData]; 
}]; 

RC3 API'larla bu yeniden yazmak için basit yolu nedir? Ve bu görünüm kaldırıldığında self.KVOController unobserve: self.site için RC3 eşdeğeri ne olur?

2) RC3 kodunu almak için Carthage kullanmam önerilir. Cartfile'u Alamofire ve SwiftyJSON için kakao kapsüllerini kullanan bir proje ile güvenli bir şekilde karıştırabilir miyim?

cevap

2

İlk soru için sizi sadece doğru yönde yönlendirebilirim. RACObserve() ile PropertyTypes arasındaki kaymayı açıklayan log to 3.0 değişikliğine bakın. Biraz daha açık ve tip güvenliği sunuyor. Uygulamanın nasıl yapılacağını anlamak için en iyi seçeneğin olduğunu düşünüyorum kaynak Here olduğunu. Ayrıca, TestType protokolü için herhangi bir test oluşturup oluşturmadıklarını ve nasıl kurduklarını taklit edip etmediklerini görmek için test durumlarına da göz atabilirsiniz.

Ayrıca, Carthage minimal düzeyde müdahaleci olacak şekilde tasarlandığından, Carthage ve CocoaPod'ları tek bir projede karıştırma konusunda hiçbir sorun yaşamayacaksınız. Web sitelerinde yer alan talimatları takip ettiğiniz sürece iyi olmalısınız. Ben bütün ReactiveCocoa kavramına yeni ve özellikle RAC 3'e de değilim

+1

bağlantılar öldü. – Bastian

+0

@Bastian Yakında güncellenecek. – hhanesand

8

Feragat :) öğrenmek yeni çerçeve etrafında oynuyorum, bu yüzden benim çözüm API amaçlanan kullanım olmayabilir . Başkalarından geribildirim almaktan ve doğru yolu öğrenmekten memnuniyet duyarım.

İlk sorumunuzla ilgili olarak şunları bulabilirim: MutableProperty olarak gözlemlemek istediğiniz mülkü tanımlayabilirsiniz. Aşağıda bir String özelliği ile en temel örnek verilmiştir. Bir görünüm modeliniz olduğunu varsayalım, bir String özelliğine sahiptir ve bunu denetleyici denetleyicinizin nesnesinde görmek istersiniz.

ViewModel.swift

class ViewModel { 
    var testProp = MutableProperty<String>("") 
} 

ViewController.swift

class ViewController: UIViewController { 
    private let viewModel = ViewModel() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let testPropObserver = viewModel.testProp.producer 
      testPropObserver.start(next: {value in 
       println("new value \(value)") 
      }) 

     viewModel.testProp.value = "you should see this in your log" 
    } 
} 
+0

Çalışan bir uygulama için teşekkürler! – hhanesand

İlgili konular