दिलचस्प पोस्ट
AngularJS: मल्टीपार्ट फॉर्म के साथ एक सरल फ़ाइल अपलोड कैसे करें? क्या कोई कारण है कि पायथन स्ट्रिंग की स्ट्रिंग लम्बी विधि नहीं है? फ़ाइलें जो कि ज़िप फ़ाइल के अंदर हैं, से सामग्री पढ़ें कैसे पता कैसे एक सरणी में जावास्क्रिप्ट / jQuery में एक विशिष्ट स्ट्रिंग है? आज एनएसडीट प्राप्त करें, कल, इस सप्ताह, पिछले सप्ताह, इस महीने, पिछले महीने … चर PHP में पीजीपी का इस्तेमाल करते हुए एन्क्रिप्ट करें? वैराइडीक ने योग समारोह को क्युरीज किया ओवरराइड करना बनाम विधि छुपा गीत में FETCH_HEAD क्या मतलब है? Google MAP API v3: प्रदर्शित मार्करों पर केंद्र और ज़ूम CreateProcess त्रुटि = 206, मुख्य () विधि चलते समय फ़ाइल नाम या एक्सटेंशन बहुत लंबा है सीएसएस छवि का आकार परिवर्तन समस्या वसंत बूट – माता-पिता पोम जब आपके पास पहले से ही एक माता पिता पोम होता है सी ++ आईओस्ट्रीम एंडल असफलता क्या है? ए से बी ] कन्वर्ट करने के लिए कैसे करें ए और बी मॉडेड हैं?

स्विफ्ट से ऑब्जेक्टिव-सी # डीफ़ाईन का उपयोग कैसे करें

स्विफ्ट के साथ थोड़ा ट्रेन करने के लिए मैं एक UIViewController वर्ग को माइग्रेट कर रहा हूं I मैं ब्रिजिंग हेडर के माध्यम से सफलता-सी कोड का सफलतापूर्वक उपयोग कर रहा हूं, लेकिन मेरे पास स्थिरांक फ़ाइल आयात करने की आवश्यकता है जिसमें #define निर्देश शामिल हैं।

मैंने कोको और उद्देश्य- सी (सरल मैक्रोज़) के साथ स्विफ्ट का उपयोग करते हुए देखा है:

सरल मैक्रोज़

आप आमतौर पर सी और ऑब्जेक्टिव-सी में एक आदिम स्थिरता को परिभाषित करने के लिए #define डायरेक्टिव का उपयोग करते हैं, स्विफ्ट में आप इसके बजाय एक वैश्विक स्थिरता का उपयोग करते हैं उदाहरण के लिए, स्थिर परिभाषा #define FADE_ANIMATION_DURATION 0.35 बेहतर है कि स्विफ्ट let FADE_ANIMATION_DURATION = 0.35 साथ व्यक्त की जा सकती है। क्योंकि सरल स्थिर-जैसे मैक्रोज़ स्विफ्ट ग्लोबल वैरिएबल के लिए सीधे मैप करता है, इसलिए संकलक स्वचालित रूप से सी और ऑब्जेक्टिव-सी स्रोत फ़ाइलों में परिभाषित सामान्य मैक्रोज़ आयात करता है।

इसलिए, ऐसा लगता है कि यह संभव है मैंने फाइल को मेरी स्थिरांक वाली ब्रिजिंग हेडर में आयात किया है, लेकिन मेरे पास। .swift फ़ाइल से कोई दृश्यता नहीं है, इसका समाधान नहीं किया जा सकता।

स्विफ्ट को मेरे स्थिर दृश्यमान बनाने के लिए मुझे क्या करना चाहिए?

अद्यतन करें:

यह NSString स्थिरांक के साथ काम कर रहा है, लेकिन बूलींस के साथ नहीं:

 #define kSTRING_CONSTANT @"a_string_constant" // resolved from swift #define kBOOL_CONSTANT YES // unresolved from swift 

वेब के समाधान से एकत्रित समाधान "स्विफ्ट से ऑब्जेक्टिव-सी # डीफ़ाईन का उपयोग कैसे करें"

फिलहाल, कुछ #define किए जाते हैं और कुछ नहीं होते हैं अधिक विशेष रूप से:

 #define A 1 

… हो जाता है:

 var A: CInt { get } 

या:

 #define B @"b" 

… हो जाता है:

 var B: String { get } 

दुर्भाग्य से, YES और NO स्विफ्ट कंपाइलर द्वारा मक्खी पर मान्यता प्राप्त और परिवर्तित नहीं हुए हैं।

मेरा सुझाव है कि आप अपने #define को वास्तविक स्थिरांक में परिवर्तित कर दें, जो कि #define से वैसे भी बेहतर है।

ज:

 extern NSString* const kSTRING_CONSTANT; extern const BOOL kBOOL_CONSTANT; 

.m

 NSString* const kSTRING_CONSTANT = @"a_string_constant"; const BOOL kBOOL_CONSTANT = YES; 

और फिर स्विफ्ट देखेगा:

 var kSTRING_CONSTANT: NSString! var kBOOL_CONSTANT: ObjCBool 

एक अन्य विकल्प को बदलने के लिए होगा अपने BOOL परिभाषित करने के लिए

 #define kBOOL_CONSTANT 1 

और तेज। लेकिन वास्तविक स्थिरांक के रूप में अच्छा नहीं है

बस ऊपर से कुछ चीजों पर एक त्वरित स्पष्टीकरण

स्विफ्ट कॉन्स्टेंट को कीवर्ड का इस्तेमाल करते हुए व्यक्त किया जाता है

उदाहरण के लिए:

  let kStringConstant:String = "a_string_constant" 

इसके अलावा, केवल एक प्रोटोकॉल परिभाषा में आप {get} का उपयोग कर सकते हैं, उदाहरण:

  protocol MyExampleProtocol { var B:String { get } } 

तेजी से आप किसी भी वर्ग या फ़ंक्शन के बाहर एक एनएम, वेरिएबल या फ़ंक्शन घोषित कर सकते हैं और यह आपके सभी वर्गों (वैश्विक रूप से) को एक विशेष फाइल आयात करने की आवश्यकता के बिना उपलब्ध होगा।

  import Foundation import MapKit let kStringConstant:String = "monitoredRegions" class UserLocationData : NSObject { class func getAllMonitoredRegions()->[String]{ defaults.dictionaryForKey(kStringConstant) } 

साधारण तेज भाषा को मैक्रोज़ के सभी # परिभाषा निर्देशों की आवश्यकता नहीं है। चलो और जटिल मैक्रोज़ को मजेदार होने के लिए परिवर्तित कर दिया जाएगा

मैक्रो का विकल्प वैश्विक चर हो सकता है हम कक्षा के बाहर वैश्विक वैरिएबल को घोषित कर सकते हैं और कक्षाओं का उपयोग किए बिना उन तक पहुंच सकते हैं। कृपया नीचे उदाहरण ढूंढें

आयात फ़ाउन्डेशन देना BASE_URL = "www.google.com"

कक्षा परीक्षण {

}