2016-09-26 17 views
10

के साथ एनएसडीएटी श्रेणी का उपयोग करना मेरे पास NSDate पर ओबीजे-सी श्रेणी है और मैं स्विफ्ट की तिथि संरचना के साथ उस श्रेणी में कार्यों का उपयोग करने की कोशिश कर रहा हूं।स्विफ्ट 3 दिनांक प्रकार

क्या हर बार डालने के बिना ऐसा करने का कोई साफ तरीका है या Date या कुछ बदसूरत अन्य हैक से उदाहरण बनाना है?

या क्या मैं अपनी वस्तुओं को तिथि के बजाय एनएसडीएट के रूप में परिभाषित करने के साथ अटक गया हूं?

एप्पल का उल्लेख है here कि

फाउंडेशन ढांचे के लिए स्विफ्ट ओवरले दिनांक संरचना, जो NSDate वर्ग के लिए पुल प्रदान करता है। दिनांक मूल्य प्रकार NSDate संदर्भ प्रकार के समान कार्यक्षमता प्रदान करता है, और दोनों को स्विफ्ट कोड में एक दूसरे के रूप में उपयोग किया जा सकता है जो उद्देश्य-सी एपीआई के साथ इंटरैक्ट करता है। यह व्यवहार स्विफ्ट ब्रिज मानक स्ट्रिंग, न्यूमेरिक और संग्रह प्रकारों को उनके संबंधित फाउंडेशन कक्षाओं के समान है।

, तो मेरे सवाल यह है कि मैं साफ न्यूनतम कोड के साथ मेरी Date वस्तुओं के साथ मेरी NSDate श्रेणी में अतिरिक्त कार्यों का उपयोग कर सकते है?

संदर्भ के लिए, मैं स्विफ्ट 3.

+1

उस 'एनएसडीएटी' उद्देश्य-सी श्रेणी का उपयोग करने के लिए, आपको अपनी 'तिथि' वस्तु को 'NSDate' पर डालना होगा। या आप अपनी श्रेणी को स्विफ्ट 'एक्सटेंशन' के रूप में' दिनांक' के रूप में पुनः लिख सकते हैं। – Rob

उत्तर

5

का उपयोग कर रहा है स्विफ्ट 3 पाट प्रकार उनकी संगत ऑब्जेक्टिव-सी वस्तु के लिए एक आंतरिक संदर्भ के माध्यम से लागू किया जाता है। तो, "विरासत पर रचना" सिद्धांत के समान, आप स्विफ्ट में, जिस तरीके से आप रुचि रखते हैं, उसे घोषित कर सकते हैं और बस कॉल को अग्रेषित कर सकते हैं।

उदाहरण के लिए

, यदि आप ऑब्जेक्टिव-सी में निम्न विधि है:

@interface NSDate(MyAdditions) 
- (NSString*)myCustomNicellyFormattedDate; 
@end 

आप Date के लिए एक विस्तार जोड़ सकता है कि बस डाले और आगे:

extension Date { 
    var myCustomNicellyFormattedDate: String { 
     return (self as NSDate).myCustomNicellyFormattedDate() 
    } 
} 

यह दृष्टिकोण लाभ दिया है उद्देश्य-सी और स्विफ्ट दोनों में विधि को उपलब्ध कराने के लिए, छोटे ओवरहेड और रखरखाव की परेशानी के साथ। और सबसे महत्वपूर्ण, कोड डुप्लिकेशन के बिना।