मैं एक परियोजना को आरएक्सस्विफ्ट और एमवीवीएम का उपयोग करने की कोशिश कर रहा हूं। मेरे पास एक ऐसी सेवा है जो प्रत्येक ऐप लॉन्च पर पार्स से डेटा की एक सूची को सिंक करता है और मैं मूल रूप से यह सुनिश्चित करना चाहता हूं कि मैं सही दृष्टिकोण ले रहा हूं।आरएक्सस्विफ्ट चर का उपयोग कर
मैंने जो किया है वह एक परिवर्तनीय विषय बना दिया गया है और फिर मेरे मॉडल को यह सुनने की अनुमति देता है। ParseService:
let rx_parseMushrooms = Variable<[ParseMushroom]>([])
MushroomLibraryModel:
_ = parseService.rx_parseMushrooms
.asObservable()
.map { (parseMushrooms:[ParseMushroom]) -> [Mushroom] in
let mushrooms = parseMushrooms.map { (parseMushroom:ParseMushroom) -> Mushroom in
let mushroom = Mapper<Mushroom>().map(parseMushroom.dictionaryWithValuesForKeys(parseMushroom.allKeys()))
return mushroom!
}
return mushrooms
}
.subscribeNext({ (mushrooms:[Mushroom]) -> Void in
self.mushrooms = mushrooms
print(mushrooms)
})
मैं सिंक स्थिति को व्यक्त करने के लिए भी ऐसा ही।
ParseService:
struct SyncState {
enum State {
case Unsynced, ConnectingToServer, SyncingInfo, FetchingImageList, SyncingImages, SyncComplete, SyncCompleteWithError
}
var infoToSync = 0
var imagesToSync = 0
var imagesSynced = 0
var state = State.Unsynced
}
let rx_syncState = Variable(SyncState())
मैं तो चर एक ला
self.rx_syncState.value = self.syncState
SyncViewModel अद्यतन:
_ = parseService.rx_syncState
.asObservable()
.subscribeNext { [weak self] (syncState:ParseService.SyncState) -> Void in
switch syncState.state {
//show stuff based on state struct
}
}
फिर भी मैं बहुत आभारी होंगे अगर कोई मुझे बता सकते हैं अगर यह है इसके बारे में जाने का एक अच्छा तरीका या यदि मैं आरएक्सस्विफ्ट का दुरुपयोग कर रहा हूं (और मुझे मार्गदर्शन करें कि मुझे कैसे करना चाहिए एस ...)
चीयर्स!
बहुत बढ़िया और उत्तर के लिए धन्यवाद :) सिंक राज्य भाग के बारे में क्या? असल में मेरे पास एक सेवा वर्ग है जो लाइब्रेरी सिंक होने तक सामान का एक गुच्छा करता है। यह "सिंक लाइब्रेरी()" विधि ऐप लॉन्च पर कॉल की जाती है लेकिन मुझे लगता है कि नए मशरूम उपलब्ध होने पर कई वर्ग सिंक की स्थिति को सुन सकेंगे। मेरे पास प्रारंभिक स्क्रीन भी है जिसमें मैं सिंक की प्रगति दिखाता हूं। क्या आप सिंक लाइब्रेरी को एक var भी बनायेंगे? यह ऐप बीटीडब्ल्यू है अगर यह बेहतर बताता है कि मैं goo.gl/xJaV0d क्या कर रहा हूं, यह पहले से ही बाहर है, मैं सिर्फ आरएक्सस्विफ्ट को मास्टर करने की कोशिश कर रहा हूं, यह मेरे दिमाग को उड़ता रहता है .. – Manny
कूल लग रहा ऐप।जैसा कि मैंने संदर्भित लेख की तरह कहा है, आपको शायद ही कभी विषयों (चर सहित) की आवश्यकता है। मुझे लगता है कि वे मुख्य रूप से उस समय के लिए लाइब्रेरी में हैं जब आपके पास कुछ ऐसा है जो उदाहरण के लिए कॉल बैक के बजाय प्रतिनिधि लेता है और आप इसे एक रूप में परिवर्तित करना चाहते हैं आरएक्स स्ट्रीम। –
सिंक्रनाइज़ेशन के मामले में, आपका डीबी कोड पहले से ही लपेटा जाना चाहिए ताकि यह अवलोकन योग्य हो। जैसा कि मैंने पीएफओबीजेक्ट के लिए ऊपर किया था। विषयों को कुछ भी नहीं से गर्म अवलोकन करने के लिए हैं। आपका डीबी गर्म अवलोकनों को उत्पन्न नहीं करना चाहिए। –