2016-09-15 10 views
24
के लिए भेजा

मैं सिर्फ तेजी से 3 के लिए हमारी परियोजना चले गए और एक समस्या के कारण दुर्घटनाओं की बहुत सारी देखें:स्विफ्ट 3 त्रुटि: [_SwiftValue pointSize] गैर मान्यता प्राप्त चयनकर्ता उदाहरण

न आया हुआ अपवाद 'NSInvalidArgumentException' की वजह से एप्लिकेशन समाप्त, कारण : '- [_ SwiftValue pointSize]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण

के लिए भेजा है कि त्रुटि के लिए कारण है कॉल करने के लिए:

[NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:context:] 

मैं क्या देखा है कि अगर मैं Nsst को स्ट्रिंग डाली रिंग करें और boundingRectWithSize पर कॉल करें, यह उस त्रुटि को फेंक देगा। ऐसा लगता है कि यह कई अन्य हिस्सों में भी हो रहा है, उदाहरण के लिए यदि मैंने स्टोरीबोर्ड में दृश्य नियंत्रक शीर्षक भेजा है तो यह वही त्रुटि फेंकता है।

कोई भी एक ही समस्या है?

समस्या को पुन: करने के लिए:

Xcode 8 में एक नया स्विफ्ट 3 परियोजना बनाएँ और viewDidLoad में निम्नलिखित पंक्ति जोड़ें:

let attributes: [String: AnyObject?] = [ 
      NSFontAttributeName: UIFont.systemFont(ofSize: 14) 
     ] 
    let boundingRect = ("hello" as NSString).boundingRect(with: CGSize(width: 100, height: 100), options: .usesLineFragmentOrigin, attributes: attributes, context: nil) 

लेकिन जैसा कि मैंने कहा यह रूप में कई अन्य स्थानों पर दुर्घटनाओं ऐसा लगता है कि UIKit कई भागों में आंतरिक रूप से इस विधि का उपयोग करता है

+0

कृपया अपना कोड प्रासंगिक भागों के साथ समस्या उत्पन्न करने के लिए दिखाएं। – OOPer

+0

ऐसा लगता है कि यह एनएसएसटींग – 3lvis

+0

के आंतरिक कार्यान्वयन से संबंधित है, मुझे एक ही दुर्घटना हो रही है लेकिन इसके लिए: (textLabel.text! NSString के रूप में)। आकार (विशेषताएं: fontAttributes) मैंने nsmutablestring का उपयोग करने से सबकुछ करने की कोशिश की है, संलग्न करना इसके लिए तार आदि यह अभी भी दुर्घटनाग्रस्त है। यह सेब गलती कोई संदेह नहीं है। वास्तव में वास्तव में बुरा है। माइग्रेट नहीं कर सकता – ullstrm

उत्तर

24

यदि मैं आपके परीक्षण कोड का उपयोग करता हूं, लेकिन डेटा प्रकार attributes डिफ़ॉल्ट रूप से दें, तो यह क्रैश नहीं होता है। यही कारण है:

let attributes = [NSFontAttributeName: UIFont.systemFont(ofSize: 14)] 

चर पर विकल्प क्लिक यह [String : UIFont] है कहते हैं।

थोड़ा अतिरिक्त परीक्षण, सुझाव देता है कि यह वैकल्पिक वस्तु से संबंधित है; [String: AnyObject] ठीक काम करता प्रतीत होता है।

संपादित करें: और इसके बाद, मैंने प्रलेखन को पढ़ने का निर्णय लिया, जो [String: Any] का उपयोग करने के लिए कहता है। :)

+29

अच्छी पकड़, फिलिप।यहां एक बिंदु, यदि कोई कस्टम फ़ॉन्ट का उपयोग कर रहा है तो फ़ॉन्ट को अनचाहे किया जाना चाहिए: 'यूआईएफओटी (नाम: यूआईएफओटी.लाइटफॉन्टनाम(), आकार: 14)! – Leonid

+2

ठीक है, क्योंकि' यूआईएफओटी (नाम: आकार:) '' UIFont? '। शब्दकोश प्रविष्टि बनाने से पहले आपको इसे खोलना होगा ... लेकिन अधिमानतः '!' के साथ नहीं (जब तक कि क्रैश एक आवश्यकता न हो)। –

+2

एक बहुत ही समान समस्या थी लेकिन रंग के साथ। 'NSForegroundColorAttributeName' को वैकल्पिक एनएससीओलर (हाँ एनएस-, मैकोज़ पर) के साथ सेट किया जा रहा था। पूर्व 3.0 जो त्रुटि होगी। कुछ नए वैकल्पिक हैंडलिंग से बहुत खुश नहीं हैं। – WCByrne

1

निम्नलिखित मेरे लिए यह तय:

let attributes: [String: UIFont] = [NSFontAttributeName: UIFont.systemFont(ofSize: 14)] 
0

[स्ट्रिंग: किसी भी] के साथ NSDictionary की जगह समस्या को ठीक करेंगे। राशि "मेरे शेष",: let attributes: [String: Any] = [NSFontAttributeName: UIFont.systemFont(ofSize: 14)]

0
func attributedString(firstText : String, amount : String, fontSize : CGFloat, color : UIColor) -> NSAttributedString { 

    let attrDict = [ NSFontAttributeName : UIFont(name: fontRegular, size: CGFloat(fontSize/2))!, 
        NSForegroundColorAttributeName : UIColor.darkGray] as [String : AnyObject] 
    let iconString = NSMutableAttributedString(string: firstText, attributes: attrDict) 

    let attrDict1 = [ NSFontAttributeName : UIFont(name: fontRegular, size: CGFloat(fontSize))!, 
        NSForegroundColorAttributeName : color] as [String : AnyObject] 
    let amountString = NSMutableAttributedString(string: amount, attributes: attrDict1) 

    iconString.append(amountString) 
    return iconString 
} 

और

lblBalanceAmount.attributedText = self.attributedString (firstText है जैसे कि यह कॉल "500", FONTSIZE: newFontSize, रंग: UIColor (लाल: 41/255.0, हरा: 1 9 2/255.0, नीला: 42/255.0, अल्फा: 1.0))

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