2016-03-03 18 views
6

यहाँ में सरणी गुण परिवर्तन निरीक्षण करने के लिए कैसे मेरी कक्षा है:RxSwift

class ViewController: UIViewController { 
    var myArray : NSArray! 
} 

मैं एक घटना एक नई सरणी के लिए हर समय myArray अंक सक्रिय करना चाहते हैं, इस तरह:

self.myArray = ["a"] 

self.myArray = ["b"] 

मैं

self.rx_observe(NSArray.self, "myArray").subscribeNext { (array) -> Void in 
    print(array) 
} 

यह केवल पहली बार आग, क्या समस्या है: rx_observe की कोशिश की लेकिन असफल कर दिया है, यहाँ मेरी कोड है?

उत्तर

11

अधिकांश समय, यदि आपके पास बैकिंग चर का नियंत्रण है, तो आप rx_observe का उपयोग करने के लिए Variable पसंद करेंगे।

class ViewController: UIViewController { 
    var myArray : Variable<NSArray>! 
} 

पहली बार जब आप myArray इस्तेमाल करेंगे, तो आप फिर तो

myArray = Variable(["a"]) 

है जैसे कि यह asign हैं, तो आप अपने मूल्य

myArray.value = ["b"] 

बदलना चाहते हैं और आप आसानी से देख सकते हैं इसके परिवर्तन,

myArray.asObservable().subscribeNext { value in 
    // ... 
} 
का उपयोग कर 10

तुम सच में rx_observe उपयोग करना चाहते हैं (शायद क्योंकि चर अपने कार्यक्रम में कहीं प्रयोग किया जाता है और आप अपने दृश्य नियंत्रक के एपीआई को बदलने के लिए नहीं करना चाहते हैं), तो आप घोषित करने के लिए myArraydynamic के रूप में (एक और आवश्यकता है की आवश्यकता होगी कि होस्टिंग क्लास NSObject का बच्चा है, यहां UIViewController इस आवश्यकता को पूरा करता है)। केवीओ को डिफ़ॉल्ट रूप से डिफ़ॉल्ट रूप से कार्यान्वित नहीं किया जाता है, और गतिशील सुनिश्चित करने का उपयोग उद्देश्य-सी रनटाइम का उपयोग करके किया जाता है, जहां केवीओ कार्यक्रमों को संभाला जाता है। इस के लिए

class ViewController: UIViewController { 
    dynamic var myArray: NSArray! 
} 

प्रलेखन पाया जा सकता है here

संबंधित मुद्दे