nil coalescing operator का उपयोग करें।
को एप्पल प्रलेखन अनुसार:
शून्य कोलेसिंग ऑपरेटर (एक ?? ख) एक वैकल्पिक एक unwraps अगर उसमें कोई मान है, या एक डिफ़ॉल्ट मान देता है ख अगर एक नहीं के बराबर है।
तो अपने समारोह ऐसा दिखाई दे सकता:
func numberOfObjectsInMyArray() -> Int {
return (myArray?.count ?? 0)
}
मैं (यह देखने के लिए एक गिनती के साथ एक सरणी है की तरह कर रही है जैसे अन्य लोगों के साथ सहमत यह कारणों की एक संख्या के लिए एक बुरा विचार हो सकता है कि "0" जब वास्तव में कोई सरणी नहीं है) लेकिन हे, यहां तक कि बुरे विचारों को कार्यान्वयन की आवश्यकता है।
संपादित करें: क्योंकि दो मिनट के बाद मैं इस उत्तर पोस्ट, मैं कर लेखक करना चाहती है कि वास्तव में क्या के लिए एक कारण में आए
तो मैं इस जोड़ रहा।
मैं स्विफ्ट में NSOutlineViewDataSource प्रोटोकॉल को लागू कर रहा हूँ। प्रोटोकॉल के लिए आवश्यक कार्यों में से एक है:
optional func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int
कि समारोह की आवश्यकता है कि आप item
पैरामीटर के बच्चों की संख्या में लौट आते हैं। मेरे कोड में, यदि आइटम में कोई बच्चा है, तो उन्हें एक सरणी में संग्रहीत किया जाएगा, var children: [Person]?
मैं उस सरणी को तब तक प्रारंभ नहीं करता जब तक कि मैं वास्तव में सरणी में कोई बच्चा नहीं जोड़ता।
दूसरे शब्दों में, समय है कि मैं NSOutlineView करने के लिए डेटा उपलब्ध कराने रहा हूँ पर, children
nil
हो सकता है या यह आबादी किया जा सकता है, या यह एक बार आबादी किया जा सकता था लेकिन बाद में यह से हटा सभी वस्तुओं, था जो इसे मामले में nil
नहीं होगा लेकिन यह count
0
होगा। NSOutlineView परवाह नहीं करता है, तो children
nil
है - सभी यह जानना चाहता है कि कितने पंक्तियों यह item
के children
प्रदर्शित करने के लिए की आवश्यकता होगी है।
तो, children
nil
वापस लौटने के लिए इस स्थिति में यह सही अर्थ है। फ़ंक्शन को कॉल करने का एकमात्र कारण यह निर्धारित करना है कि NSOutlineView की कितनी पंक्तियों की आवश्यकता होगी। यह परवाह नहीं करता है कि उत्तर 0
है क्योंकि children
शून्य है या क्योंकि यह खाली है।
return (children?.count ?? 0)
मैं क्या जरूरत है क्या करेंगे। यदि children
nil
है तो यह 0
वापस करेगा। अन्यथा यह count
लौटाएगा। उत्तम!
शायद वैकल्पिक 'Int?' वापस कर दें? –
वैकल्पिक 'Int' आवश्यक नहीं है, क्योंकि यहां हर मामले में मूल्य वापसी मूल्य है। – holex
'मेरा ऐर्रे? .उंट' वापस लौटें ... हाँ, निश्चित रूप से छोटा। लेकिन निश्चित रूप से उस परिणाम पर निर्भर करता है जहां एक वैकल्पिक अनुमति है। 'समारोह numberOfSectionsInTableView में कोई अच्छा (tableView: UITableView) -> Int' उदाहरण –