मैं तेजी से भाषा में नया हूं और मेरी समस्या यह है कि तेजी से अवलोकन/पर्यवेक्षक पैटर्न का उपयोग कैसे करें।तेजी से NSObjects की एक सरणी का निरीक्षण कैसे करें?
मैं अपनी सरणी को मेरी सॉकेट मैनेजर कक्षा में देखने योग्य बनाना चाहता हूं ताकि इसे मेरे UIViewController क्लास द्वारा देखा जा सके। मैं प्रत्यक्ष वर्ग एंड्रयू जे वैगनर द्वारा लिखित जो मैं इस लिंक से मिल गया का इस्तेमाल किया है:
वर marketIndexList:
http://www.drewag.me/posts/swift-kvo-substitute-observable-variables
मैं सरणी है सरणी < MarketIndex> = []
जो सर्वर से अपना डेटा प्राप्त करेगा। यह सूची हर बार सर्वर से प्राप्त एक नया डेटा अपडेट किया जाएगा। बाद मैं सर्वर से मेरी सरणी के मूल्यों मिल गया मैं प्रकार प्रत्यक्ष वर्ग जो ऊपर के लिंक द्वारा कार्यान्वित किया जाता का यह बनाना चाहते:
marketIndexList = प्रत्यक्ष (marketIndexList)
लेकिन मैं यह त्रुटि आई:
'MarketIndex' 'AnyObject' के समान नहीं है
मार्केटइंडेक्स एनएसओब्जेक्ट प्रकार का एक वर्ग है जिसमें स्ट्रिंग के कुछ गुण हैं।
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
}
}
किसी को भी मुझे बता सकते हैं कि समस्या क्या है:
यह प्रत्यक्ष वर्ग है कि मैं का इस्तेमाल किया है है?
क्या किसी को भी तेजी से वस्तुओं की एक श्रृंखला का निरीक्षण करने का तरीका पता है?
मैं किसी भी मदद की सराहना करता हूं।
अग्रिम धन्यवाद।
धन्यवाद, लेकिन यह मेरी समस्या का समाधान नहीं करता है। इस लाइन पर एक ही त्रुटि अभी भी मौजूद है: marketIndexList = Observable (marketIndexList) मैं अपनी सरणी को देखने योग्य नहीं बना सकता। – user2366997
क्षमा करें, मुझे गलतफहमी थी कि आप स्विफ्ट से उद्देश्य-सी केवीओ का उपयोग करना चाहते थे। मैंने अपना जवाब संपादित किया। –
मध्यम लिंक के लिए धन्यवाद, मैं उस दृष्टिकोण का उपयोग करता हूं ताकि हम तेजी से बाहर निकल सकें! – gbdavid