Hızlı dilde yenilik yapıyorum ve sorunum, gözlemlenebilir/gözlem desenini hızlı bir şekilde nasıl kullanacağım.Hızlı bir dizi NSObjects nasıl gözlemlenir?
Dizim, SocketManager sınıfımda gözlemlenebilir olmasını sağlamak için UIViewController sınıfım tarafından izlenebilir.
var marketIndexList:
http://www.drewag.me/posts/swift-kvo-substitute-observable-variables
Ben dizi var: Ben bu bağlantıdan var Andrew J Wagner tarafından yazılan gözlemlenebilir sınıfını kullandık Diziyi < MarketIndex> = []
Verilerini bir sunucudan alacak. Bu liste sunucudan her yeni veri alındığında güncellenecektir. Ben sunucudan benim Array değerlerini aldıktan sonra, yukarıdaki bağlantıyı tarafından uygulanan tip gözlemlenebilir sınıfın yapmak istiyorum:
marketIndexList = gözlemlenebilir (marketIndexList)
Ama bu hata var:
'MarketIndex', 'AnyObject' ile aynı değildir.
MarketIndex, Type String'in bazı özelliklerine sahip olan NSObject türünde bir sınıftır.
import Foundation
class Observable {
typealias DidChangeHandler = (oldValue: Array<MarketIndex>?, newValue: Array<MarketIndex>) ->()
var value : Array<MarketIndex> = [] {
didSet {
for (owner, handlers) in self.observers {
for handler in handlers {
handler(oldValue: oldValue, newValue: value)
}
}
}
}
init(_ value: Array<MarketIndex>) {
self.value = value
}
func addObserverForOwner(owner: IndexViewController, triggerImmediately: Bool, handler: DidChangeHandler) {
if let index = self.indexOfOwner(owner) {
// since the owner exists, add the handler to the existing array
self.observers[index].handlers.append(handler)
} else {
// since the owner does not already exist, add a new tuple with the
// owner and an array with the handler
self.observers.append(owner: owner, handlers: [handler])
}
if (triggerImmediately) {
// Trigger the handler immediately since it was requested
handler(oldValue: nil, newValue: self.value)
}
}
func removeObserversForOwner(owner: AnyObject) {
if let index = self.indexOfOwner(owner) {
self.observers.removeAtIndex(index)
}
}
// #pragma mark - Private Properties
var observers: [(owner: IndexViewController, handlers: [DidChangeHandler])] = []
// #pragma mark - Private Methods
func indexOfOwner(owner: AnyObject) -> Int? {
var index : Int = 0
for (possibleOwner, handlers) in self.observers {
if possibleOwner === owner {
return index
}
index++
}
return nil
}
}
kimse sorunun ne olduğunu bana söyleyebilir:
Bu gözlemlenebilir ben kullandım sınıftır?
Ayrıca, hızlı bir şekilde bir nesne dizisini gözlemlemek için bir yöntem bilen var mı?
Herhangi bir yardım için minnettarım.
Şimdiden teşekkürler.
Teşekkürler, ama bu benim sorunumu çözmüyor. Aynı satır bu satırda hala mevcut: marketIndexList = Gözlemlenebilir (marketIndexList) Dizilimimi gözlemlenebilir yapamıyorum. – user2366997
Üzgünüz, Swift'den Objective-C KVO'yu kullanmak istediğinizi yanlış anladım. Cevabımı düzenledim. –
Orta bağlantı için teşekkürler, bu yaklaşımı kullanmayı tercih ederim, böylece hızlı bir şekilde en iyi şekilde faydalanabiliriz! – gbdavid