के खिलाफ कोको बाइंडिंग का उपयोग कैसे करें मैं स्विफ्ट सीख रहा हूं।स्विफ्ट structs
मैं ज्यादातर इन दिनों आईओएस में काम करते हैं, लेकिन मैं इस समय मैं कोको बाइंडिंग का उपयोग कर पसंद UI तत्व करने के लिए अपने मॉडल से मूल्यों से जोड़ने के लिए पर OSX ओएस एक्स
के लिए एक छोटे से परियोजना पर काम कर रहा हूँ। यह गोंद कोड के टन लिखने बचाता है।
मैं एक प्रोग्राम लिख रहा हूं जो स्विफ्ट के प्रदर्शन की तुलना सी/उद्देश्य-सी के साथ करता है। मैं एक प्राइम नंबर जनरेटर का परीक्षण परियोजना के रूप में उपयोग कर रहा हूं।
मैंने एक स्विफ्ट स्ट्रक्चर ComputeSettings
बनाया है जो स्विफ्ट और ऑब्जेक्टिव-सी दोनों में प्राइम नंबर जनरेटर चलाने के लिए सेटिंग्स (और परिणाम) को समाहित करता है।
struct ComputeResults
{
var totalCalculated: Int = 0
var primesPerSecond: Int = 0
var totalTime: NSTimeInterval = 0
}
struct ComputeSettings
{
var totalToCalculate: Int = 10000000
var swiftResults: ComputeResults = ComputeResults()
var objCResults: ComputeResults = ComputeResults()
}
मैं तो मेरे विचार नियंत्रक में टाइप ComputeSettings का एक उदाहरण चर है: struct इस तरह दिखता है
class ViewController: NSViewController
{
var theComputeSettings = ComputeSettings()
var foo: Int = 12
//...
}
मेरी UI में, मैं उपयोगकर्ता इनपुट संख्या देता है कि एक पाठ क्षेत्र है गणना करने के लिए प्रमुख संख्याओं का। आईबी में, मैं फ़ील्ड का चयन करता हूं, उपयोगिता क्षेत्र में बाइंडिंग टैब का चयन करता हूं, फिर मान बाइंडिंग खोलता हूं। मैं अपने ViewController
कक्षा से बांधता हूं। मैं self.theComputeSettings.totalToCalculate
का मॉडल कुंजी पथ दर्ज करता हूं।
यह एक अपवाद के साथ विफल रहता है जब मैं अपने प्रोजेक्ट को चलाने:
(contentViewController) उपयोगकर्ता पर (NSWindow) का निरीक्षण किया संपत्ति परिभाषित सेट करने में विफल: [addObserver: forKeyPath: @ "theComputeSettings.totalToCalculate" विकल्प : 256 संदर्भ: 0x0] उस ऑब्जेक्ट को भेजा गया था जो "thecomputeSettings" संपत्ति के लिए केवीसी-अनुरूप नहीं है।
, तो इसके बजाय, मैं डमी संपत्ति foo
(ताकि मॉडल कुंजी पथ self.foo
पर सेट है) यह पूरी तरह से काम करता है करने के लिए बाध्य। उस स्थिति में मुझे लगता है कि मेरा टेक्स्ट फ़ील्ड 12 का मेरा मान प्रदर्शित करता है।
स्विफ्ट structs का उपयोग करने के लिए कोई तरीका है और अभी भी कोको बाइंडिंग काम करने के लिए मिलता है? मैंने गुगलिंग की उचित मात्रा में काम किया, लेकिन कुछ भी नहीं मिला।
मैं निश्चित रूप से इसे मैन्युअल तरीके से कर सकता हूं, और अपनी खिड़की के विचारों में अपनी संरचनाओं से अपने मूल्य स्थापित करने के लिए गोंद कोड का एक गुच्छा लिख सकता हूं, लेकिन मैं कोको बाइंडिंग का उपयोग करना चाहता हूं। यही वह है जो वे हैं।
अच्छी पू। यह एक गंभीर सीमा की तरह लगता है।क्या एक केवीओ-अनुरूप सेट विधि को कॉल करने के लिए एक स्विफ्ट किए गए सेटसेट विधि को मानचित्रित करने के लिए structs और/या structs पर आदिम मूल्यों पर श्रेणियों को लागू करना संभव होगा? मैं 500 एलबीएस लिखने के बीच में हूँ। मेरे क्षेत्रों में मूल्यों को पढ़ने/प्रदर्शित करने के लिए गोंद कोड का। कोको बाइंडिंग ओएस एक्स विकास के बारे में बेहतर चीजों में से एक है। मैं वास्तव में उनको बहुत अधिक उपयोग करता हूं, भले ही इसका मतलब कुछ भारी उठाना है। –
ComputeResults को संरचना क्यों होना चाहिए? क्या यह वास्तव में आपके द्वारा प्रोफाइल किए जा रहे कोड का हिस्सा है? –
यह ** ** एक संरचना होने के लिए ** नहीं है। यह डेटा का प्रतिनिधित्व करने का सबसे साफ तरीका प्रतीत होता था। मुझे लगता है कि मैं इसे एक कस्टम डेटा ऑब्जेक्ट में बदल दूंगा, क्योंकि ऑब्जेक्ट्स पर गुण केवीओ अनुपालन होना चाहिए, है ना? –