2016-11-07 9 views
6

मैं एक struct बनाया है मेरी फोंट के लिए उपलब्ध विश्व स्तर पर कैश की गई पूर्व:फ़ॉन्ट वैकल्पिक क्यों है?

struct Fonts { 
    static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0) 
} 

प्रयोग ...:

xy.font = Fonts.avenirRegular 

यह मुझसे कहता है, कि मेरी लगातार एक वैकल्पिक है।

वैकल्पिक प्रकार 'UIFont?' का मूल्य अनचाहे नहीं; क्या आप '!' का उपयोग करना चाहते थे या '?'?

यह वैकल्पिक क्यों है? क्या कोई मौका है कि प्रत्येक आईओएस डिवाइस पर AvenirNextCondensed-Regular उपलब्ध नहीं है? सहायता बहुत सराहना की है।

+10

नाम, एक मनमाना स्ट्रिंग है तो 'UIFont (नाम:" §% और() wot ???! ", का आकार: 399)' चाहिए 'शून्य' वापस करने का मौका है। –

+1

यदि आप जानते हैं, यहां तक ​​कि उद्देश्य-सी में भी यूआईएफओटी की इनिट विधि विधि को शून्य नाम दे सकती है यदि आप फ़ॉन्ट नाम के लिए मनमानी स्ट्रिंग भेजते हैं। उद्देश्य-सी में हालांकि प्रारंभकर्ता प्रारंभिक प्रारंभकर्ता है जिसका अर्थ है कि या तो आपको यूआईएफओटी भी मिलती है या आप वापस आ जाएंगे। इन निरर्थक प्रारंभकर्ता (तेजी से नाइलबल) का प्रतिनिधित्व करने के लिए हम वैकल्पिक रिटर्न प्रकारों का उपयोग करते हैं जो कहते हैं कि विधि कुछ प्रकार की वस्तु को वापस कर सकती है या यह शून्य वापस आ जाएगी। – iamyogish

उत्तर

3

प्रारंभकर्ता जो आप UIFont के लिए उपयोग कर रहे हैं वह वैकल्पिक वैकल्पिक UIFont? ऑब्जेक्ट है यानी वैकल्पिक रूप से लपेटने के लिए आपको वह सुझाव मिल रहा है।

init?(name fontName: String, size fontSize: CGFloat) 

चेक अधिक जानकारी के लिए UIFont की Apple Documentation

5

"वैकल्पिक" यहां का अर्थ यह है कि समस्या यह है कि फ़ॉन्ट मौजूद नहीं है (भले ही हम जानते हैं) और आपको इसे पहचानना है, इसे वैकल्पिक बनाकर आप संकलक को बता रहे हैं कि मुझे पता है कि फ़ॉन्ट नहीं है आपकी लाइब्रेरी का हिस्सा लेकिन मुझे यकीन है कि यह वहां है।

+2

यदि उस नाम के साथ फ़ॉन्ट मौजूद है तो यह अभी भी 'यूआईएफओटी' वापस कर देगा? क्योंकि प्रारंभकर्ता ओपी वैकल्पिक वैकल्पिक 'यूआईएफओटी' ऑब्जेक्ट का उपयोग कर रहा है। –

+0

@ निर्वाड बिल्कुल :) –

+1

आपके उत्तर साथी के लिए धन्यवाद। यहां तक ​​कि आपके उत्तर में सबसे ज्यादा उत्थान हैं (मैंने यह देखने के लिए इंतजार किया है कि कौन सी इच्छा होगी), मैंने एक और जवाब जांचना चुना है। आप स्पष्टीकरण अच्छा है, लेकिन यह "सर्वश्रेष्ठ" या सबसे "सही" नहीं हो सकता है। आपने कहा, फ़ॉन्ट वैकल्पिक नहीं है। लेकिन मैं प्राप्त कर रहा हूं, जैसा कि @ निर्वाड ने उल्लेख किया है, एक 'यूफॉन्ट?', इसलिए लौटाया मूल्य वास्तव में वैकल्पिक है। –

0

बस को रोकने के लिए बल खोलना का उपयोग करें:

struct Fonts { 
    static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0)! 
} 
+0

आपके विचार के लिए धन्यवाद। लेकिन वह सवाल का जवाब नहीं देता है। मुझे पता था कि मुझे क्या मिल रहा है और इसे कैसे हल किया जाए। सवाल यह था कि, मुझे यह क्यों मिल रहा है। लेकिन यह आगे दर्शकों के लिए सहायक हो सकता है –

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