2014-10-30 7 views
11

मुझे स्विफ्ट में एक पूर्णांक में NSString को परिवर्तित करने की आवश्यकता है: यहां वर्तमान कोड का उपयोग कर रहा है; यह काम नहीं करता:स्विफ्ट का उपयोग करके मैं एक एनएसएसटींग को एक पूर्णांक में कैसे परिवर्तित करूं?

var variable = (NSString(data:data, encoding:NSUTF8StringEncoding)) 
exampeStruct.otherVariable = (variable).intValue 

चर एक सामान्य varable है, और exampleStruct एक subvariable otherVariable साथ कोड में कहीं एक struct है।

मैं इसे NSString के int मूल्य के लिए exampleStruct.otherVariable सेट करने की उम्मीद है, लेकिन मैं निम्नलिखित त्रुटि मिलती है:

"Cannot convert the expression's type() to type Float" 

मैं कैसे स्विफ्ट में एक NSStringint को परिवर्तित?

+9

क्या: यही कारण है कि यह तेजी से देशी String उपयोग करना बेहतर है है? https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instp/NSString/intValue। स्विफ्ट 2 में –

उत्तर

1

आपको वहां 2 विकल्प खोलना होगा, ध्यान दें कि मैंने स्ट्रिंग को "स्ट्रिंग" जोड़ने के रूप में चर घोषित किया है। उदाहरण:

if let variable:String = NSString(CString:"1", encoding: NSUTF8StringEncoding) { 
    if let otherVariable = variable.toInt() { 
     println(otherVariable) // "1" 
    } 
} 

आपके मामले में आप इस तरह करना चाहिए:

if let variable:String = NSString(data: data, encoding: NSUTF8StringEncoding) { 
    if let exampeStruct.otherVariable = variable.toInt() { 
     println(exampeStruct.otherVariable) // "1" 
    } 
} 
+0

toInt() फ़ंक्शन हटा दिया गया है। हमें int के कंस्ट्रक्टर का उपयोग करना है जो स्ट्रिंग - Int (myString) स्वीकार करता है। अधिक जानकारी के लिए कृपया इस उत्तर का संदर्भ लें: http://stackoverflow.com/a/30739522/878414 – Vaquita

1

ऐसा लगता है कि समस्या इंट रूपांतरण नहीं हो सकती है, बल्कि यह है कि उदाहरण स्ट्रक्चर फ़्लोट की अपेक्षा कर रहा है।

यदि यह समस्या नहीं है (और दिया गया है, तो स्विफ्ट के लिए एक्सकोड त्रुटियां अक्सर वास्तविक समस्या के बजाए लाइन नंबर के बारे में अधिक प्रतीत होती हैं) तो इस तरह कुछ ऐसा आपके लिए काम करना चाहिए?

var ns:NSString = "1234" 
if let i = (ns as String).toInt() { 
    exampleStruct.otherVariable = i 
} 
1

मैं जानता हूँ कि आप पहले से ही अपने जवाब मिल गया है, लेकिन मैं सिर्फ समझाने के लिए क्या (मुझे लगता है कि) चाहते हैं तुच्छ नहीं हो सकता है

सबसे पहले, हम कुछ NSData हम NSString को परिवर्तित करना चाहते है, क्योंकि कोई भी guaranties डेटा एक वैध UTF8 बफर है, यह एक वैकल्पिक

var variable = NSString(data:data, encoding:NSUTF8StringEncoding) 
वापसी

variable: NSString?

आमतौर पर

NSString जिसका मतलब है तेजी के String को पाट कर रहा है, लेकिन इस मामले में, हम एक NSString निर्माता का उपयोग करें - आप के रूप में अधिक वाक्य रचना की तरह एक "फाउंडेशन" है, जो सीधे आयात नहीं किया था इसके बारे में सोच सकते हैं तेज

हम अभी भी साथ NSString

if let unwrappedVariable = variable { 
    var number = unwrappedVariable.intValue 
} 

अगर'फाउंडेशन' जिस तरह से उपयोग कर सकते हैं (वहाँ NSData के लिए कोई पुल के रूप में) 210 एक Float है, लेकिन स्ट्रिंग एक पूर्णांक के एक स्ट्रिंग प्रतिनिधित्व

if let unwrappedVariable = variable { 
    var number: Float = Float(unwrappedVariable.intValue) 
} 

अगर दोनों number और स्ट्रिंग (के प्रतिनिधित्व) कर रहे हैं तैरता है:

if let unwrappedVariable = variable { 
    var number:Float = unwrappedVariable.floatValue 
} 

वैसे भी, वहाँ का उपयोग कर के साथ एक छोटी सी समस्या है फाउंडेशन। इन प्रकार के रूपांतरणों के लिए इसमें वैकल्पिक मूल्य की कोई अवधारणा नहीं है (int, float के लिए)। यह 0 लौटाएगा यदि यह स्ट्रिंग को पूर्णांक या फ्लोट नहीं कर सकता है।प्रलेखन का शीघ्रता से अवलोकन के बारे में

if let variable: String = NSString(data: data, encoding: NSUTF8StringEncoding) { 
    if let integer = variable.toInt() { 
     var integerNumber = integer 
     var floatNumber = Float(integer) 
    } 
} 
संबंधित मुद्दे

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