2010-09-28 15 views
23

.NET में मैं बस DataForm.Source = ऑब्जेक्ट की तरह कुछ करता हूं और फिर जादू होता है। प्लेटफार्म मार्ग डेटा ui fileds से ऑब्जेक्ट गुणों में परिवर्तन करता है, सत्यापन करता है और इसी तरह। क्या मैं कोको टच और कोरडाटा ऑब्जेक्ट्स के साथ कुछ ऐसा कर सकता हूं?क्या आईओएस के लिए कोई डेटा बाइंडिंग तंत्र उपलब्ध है?

उत्तर

15

कोको में सबसे नज़दीकी चीज 'कुंजी-मूल्य निरीक्षण' है। डेस्कटॉप कोको ढांचे में आप अंतर्निहित वस्तुओं तक उपयोगकर्ता इंटरफ़ेस तत्वों को हुक करने के लिए बाइंडिंग का उपयोग कर सकते हैं ताकि ऑब्जेक्ट्स या UI तत्वों में परिवर्तन दूसरे में दिखाई दे।

iOS पर

जबकि कोको यूआई बाइंडिंग की इस तरह नहीं है, तब भी आप 'की-वैल्यू अवलोकन' का उपयोग कर सकते यूआई तत्वों के साथ डाटा मॉडल में परिवर्तन सिंक्रनाइज़ करने के लिए यहां दिए गए अनुसार:

http://developer.apple.com/library/iOS/#documentation/General/Conceptual/Devpedia-CocoaApp/KVO.html

+2

मैं ऊपर के लिंक काम नहीं कर सकता है, लेकिन लिंक नीचे मेरे लिए काम किया है। http://developer.apple.com/library/iOS/#documentation/General/Conceptual/Devpedia-CocoaApp/KVO.html –

+2

कि लिंक borked है, भी –

+6

[मुख्य मान प्रोग्रामिंग गाइड - गूगल खोज] (http://www.google.com/search?client=safari&rls=en&q=Key-Value+Coding+Programming+Guide&ie=UTF-8&oe=UTF-8&redir_esc=&ei=M-TWT_33O66hmQW__aTxAg) उम्मीद है कि इस एक और अधिक विश्वसनीय लिंक :) – nacho4d

3

NSFetchedResultsController मत भूलना।

एक पूर्ण उड़ा डेटा बाध्य नियंत्रक नहीं है, लेकिन कोर डेटा के साथ तालिका दृश्यों का उपयोग करना बहुत आसान बनाता है।

1

मैं अपने टेबल व्यू कंट्रोलर के लिए स्टैनफोर्ड विश्वविद्यालय से CoreDataTableViewController का उपयोग करता हूं। यह बहुत सारे विवरण छुपाता है जो आप आमतौर पर अपने TableViewController में लागू करेंगे।

CoreDataTableViewController.h और .m के लिए Googling आपको सड़क पर मदद करेगा। कई पाठ्यक्रमों के संस्करण उपलब्ध हैं, नवीनतम एआरसी करता है, पुराने लोग नहीं करते हैं।

लेबल को सिंक करने और एनएसएमएनेज्ड ऑब्जेक्ट के साथ फ़ील्ड संपादित करने के लिए, मैं अभी भी एक अच्छा समाधान ढूंढ रहा हूं।

15

मैंने एक छोटी ओपन-सोर्स लाइब्रेरी लिखी जो कुछ सरल डेटा-बाइंडिंग कार्यक्षमता प्रदान करता है। यह मूल रूप से केवल कुंजी-मूल्य निरीक्षण (केवीओ) के आसपास एक रैपर है।

वहाँ GitHub पर कुछ इसी तरह की अन्य पुस्तकालयों हैं:

+0

लिंक http://github.com/jonsterling/Observe टूटा हुआ है –

12

शायद यह भी उल्लेख करना चाहिए Github के Reactive Cocoa, रचना और मूल्यों के दृश्यों, नेट के Reactive Extensions (Rx) का एक उद्देश्य-सी संस्करण बदलने के लिए एक रूपरेखा।

बाध्यकारी यांत्रिकी बहुत आसान की जा सकती है (नमूना से):

// RACObserve(self, username) creates a new RACSignal that sends a new value 
// whenever the username changes. -subscribeNext: will execute the block 
// whenever the signal sends a value. 
[RACObserve(self, username) subscribeNext:^(NSString *newName) { 
    NSLog(@"%@", newName); 
}]; 
3

आप स्विफ्ट उपयोग कर रहे हैं के भीतर, बाहर की जाँच क्या कर सकते हैं बॉण्ड ढांचा: https://github.com/ReactiveKit/Bond

बाइंडिंग के रूप में सरल है के रूप में:

textField.reactive.text.bind(to: label.reactive.text) 

यह कार्यात्मक के साथ अच्छी तरह से खेलता है:

textField.reactive.text 
    .map { "Hi " + $0 } 
    .bind(to: label.reactive.text) 

और सरल टिप्पणियों प्रदान करता है:

textField.reactive.text 
    .observeNext { text in 
    print(text) 
    } 
0

हाँ, वहाँ एक डेटा बाइंडिंग रूपरेखा है कि इंटरफ़ेस बिल्डर में अच्छी तरह से एकीकृत करता है और केवल न्यूनतम कोड भूमि के ऊपर (की आवश्यकता है पर अगर सब)।

पर https://github.com/mutech/aka-ios-beacon

संपादित एक नज़र डालें: उदाहरण के लिए आप बस करने के लिए तालिका दृश्य का डेटा स्रोत बाइंडिंग संपत्ति की स्थापना इंटरफ़ेस बिल्डर में से एक प्राप्त किए गए परिणाम नियंत्रक करने के लिए एक तालिका दृश्य बाध्य कर सकते हैं:

[ yourResultsController ] { defaultCellMapping: "YourCellId" }

और केवल एक चीज जो आपको करना है वह yourResultsController को अपने व्यू कंट्रोलर में परिभाषित करना है।

wiki एक नहीं बल्कि पूरा प्रलेखन और उदाहरण उपयोग के मामलों का एक बहुत प्रदान करता है।

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