2015-09-18 11 views
11

जब भी कोई lazy var मैं स्विफ्ट में एक संकलन त्रुटि मिलती है 2/XCode 7 की घोषणा में एक स्ट्रिंग शाब्दिक प्रकट होता है: Cannot convert value of type String to expected argument type '(_builtinStringLiteral: RawPointer, byteSize: Word, isASCII: Int1)' ...स्ट्रिंग शाब्दिक [प्रकार स्ट्रिंग के मान कनवर्ट नहीं कर सकता ...]

(मैं स्विफ्ट 1.2/XCode 6 में कोई समस्या नहीं थी)

सरल रेखा है कि इस त्रुटि पैदा करता है इस तरह दिखता है:

lazy var foo = "bar" 

लेकिन अधिक प्रासंगिक (annoyingly), यह भी initializers के साथ होता है जो स्ट्रिंग तर्क लेते हैं :

lazy var viewsLabel = HWLabel(color: COLOR_WHITE, font: ProximaNova("Semibold", 13)) 
lazy var durationIconView = HWIconView(imageName: "TimeIcon", color: COLOR_WHITE) 

ये स्पष्ट रूप से मेरे अपने initializers हैं, और मैं देख रहा हूँ एप्पल SDKs बहुत बार initializers में args के रूप में स्ट्रिंग्स है लगता नहीं है। क्या init में स्ट्रिंग्स खराब हैं?

कार्य ब्लॉक में घोषणा को लपेट रहा है।

मैं अब ऐसा कर सकता हूं, या बस उन्हें lazy नहीं बना सकता।

हालांकि मैं अभी भी उत्सुक हूं। क्या यह एक एक्सकोड 7 बग है?

अद्यतन:

बस देखा है कि क्या काम करता है नहीं है को बंद करने में घोषणा लपेटकर, बल्कि वर इतना है कि यह पता नहीं लगाया है के प्रकार को निर्दिष्ट।

तो, काम क्या करता:

lazy var viewsLabel: HWLabel = HWLabel(color: COLOR_WHITE, font: ProximaNova("Semibold", 13)) 
lazy var durationIconView: HWIconView = HWIconView(imageName: "TimeIcon", color: COLOR_WHITE) 

क्यों प्रकार निष्कर्ष के साथ एक lazy var घोषणा भोजनालयों में एक स्ट्रिंग की उपस्थिति मेरे से परे है। अभी भी एक झटका है यह एक एक्सकोड 7 बग हो सकता है।

+0

ऐसा लगता है एक स्पष्ट प्रकार एनोटेशन मदद करता है कि, उदाहरण के लिए 'आलसी var foo: स्ट्रिंग =" बार "'। –

+0

हा, धन्यवाद @ मार्टिनआर! बस उस पर ध्यान दिया और मेरा सवाल अपडेट किया। –

+0

मुझे एक बग की तरह लग रहा है। –

उत्तर

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