2012-10-24 15 views
18

Int के लिए टाइप करें मैं उद्देश्य सी कोड, मैं कहाँ कास्टिंग कर रहा हूँ के इस बिट एक NSString एक int रहे हैं:उद्देश्य सी - NSString से कास्टिंग

b: 18396 
:

NSString *[email protected]"123abc"; 
NSInteger b=(int) a; 
NSLog(@"b: %d",b); 

और NSLog इस उत्पादन का उत्पादन

क्या कोई मुझे बता सकता है कि यह क्यों हो रहा है?

मैं एक पूर्णांक के लिए एक स्ट्रिंग कास्टिंग इंप्रेशन प्रकार के तहत था स्ट्रिंग से संख्यात्मक मूल्य प्राप्त होगा।

+0

संख्यात्मक मूल्य प्राप्त करने के लिए स्ट्रिंग से: http://stackoverflow.com/questions/4663438/objective-c-find-numbers-in-string – janusbalatbat

उत्तर

31

आपके पास NSString ऑब्जेक्ट पर पॉइंटर का पूर्णांक मान मिला है। पूर्णांक स्ट्रिंग पार्स करने में आपको क्या करना चाहिए:

int val = [stringObj intValue]; 

या NSInteger के लिए:

NSInteger val = [stringObj integerValue]; 
5

जब आप किसी ऑब्जेक्ट को एक पूर्णांक पर डालेंगे तो आपको सूचक पते में सूचक मिलेगा। स्ट्रिंग के पूर्णांक मान प्राप्त करने के लिए आप [a integerValue] पर कॉल कर सकते हैं।

इसके अलावा जब इसे कास्टिंग करना NSIntegerint का इंस्टेंट करने के लिए बेहतर है। क्योंकि 64 बिट ऑपरेटिंग सिस्टम का उपयोग करते समय NSInteger 64 बिट होगा।

10

संख्यात्मक मूल्य उपयोग प्राप्त करने के लिए

@([a intValue]); 
0

या ऑब्जेक्टिव-सी शाब्दिक वाक्य रचना के साथ:

NSString *a = @"123abc"; 
NSInteger b = [a integerValue]; 
+0

आपको NSNumber * यहां मिलता है, NSInteger नहीं – Cfr