2010-08-11 11 views
5

काम नहीं करता है मुझे खाली (या शून्य) टेक्स्ट प्रॉपर्टी के लिए यह अजीब समस्या परीक्षण मिला है। यहाँ मेरी सेटअप: मैं इसे में 6 पाठ फ़ील्ड और यहाँ कोड मैं उन क्षेत्र (एक NSMutable सरणी में लोड) के माध्यम से जाने के लिए का उपयोग के साथ एक दृश्य मिला ...UITextField: रिक्त स्ट्रिंग या शून्य या शून्य के लिए परीक्षण टेक्स्ट प्रॉपर्टी

NSEnumerator *portsEnumerator = [appliancePorts objectEnumerator]; 
UITextField *tmpField; 
newSite.port = [NSMutableArray array]; 
while (tmpField =[portsEnumerator nextObject]) { 
    NSLog(@"value:%@",tmpField.text); 
    if (![tmpField.text isEqualToString:nil]) { 
     [newSite.port addObject:(NSString *)tmpField.text]; 
    } 
} 

जब मैं इस इंटरफ़ेस में हूँ और पहले दो क्षेत्र में कुछ पाठ और "बस" टैब आणि बाकी क्षेत्र टाइप करें और इसे "पूर्ण" बटन यहाँ मैं क्या GDB उत्पादन से मिल गया है:

2010-08-10 20:16:54.489 myApp[4883:207] value:Value 1 

2010-08-10 20:16:58.115 myApp[4883:207] value:Value 2 

2010-08-10 20:17:02.002 myApp[4883:207] value: 

2010-08-10 20:17:13.034 myApp[4883:207] value: 

2010-08-10 20:17:15.854 myApp[4883:207] value: 

2010-08-10 20:17:17.762 myApp[4883:207] value: 

मुझे पता है कि यह काम करना चाहिए अगर मैं खाली स्ट्रिंग के लिए परीक्षण क्योंकि कंसोल पर डंप होने पर टेक्स्ट प्रॉपर्टी यह दिखाती है:

UITextField: 0x5d552a0; frame = (20 8; 260 30); text = ''; clipsToBounds = YES; opaque = NO; tag = 1; layer = CALayer: 0x5d54f20 

लेकिन असली समस्या शुरू हो जब मैं वापस दृश्य जाना, एक ही पहले दो क्षेत्र में कुछ पाठ दर्ज करने और इसे सही होने के बाद (अन्य क्षेत्र के माध्यम से नहीं जा रहा इसलिए वे किसी भी फोकस नहीं मिलता है) बटन "हो गया"। यह फिर से GDB उत्पादन है ...

2010-08-10 20:23:27.902 myApp[4914:207] value:Value 1 

2010-08-10 20:23:31.739 myApp[4914:207] value:Value 2 

2010-08-10 20:23:34.523 myApp[4914:207] value:(null) 

2010-08-10 20: 23: 56.443 MyApp [4914: 207] * समाप्त एप्लिकेशन न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से: '* - [NSMutableArray insertObject: atIndex:]: प्रयास 2 में नहीं के बराबर ऑब्जेक्ट सम्मिलित करने के लिए '

तो, स्पष्ट समस्याओं है कि पहले isEqualtoString:nil काम नहीं करता है और दूसरा, कैसे से इस पाठ परिवर्तन आते हैं' 'के लिए मैदान पर ध्यान डालने के मामले में शून्य।

तो, खाली क्षेत्र के परीक्षण के लिए एक बेहतर तरीका है?

धन्यवाद!

+0

अगर आप UITextView का उपयोग कर रहे तो http://stackoverflow.com/a/8238742/1660139 – Haider

+0

अगर आप UITextView का उपयोग कर रहे तो इस लिंक http://stackoverflow.com/a/8238742/1660139 – Haider

उत्तर

21

मैं

if (![tmpField.text length]) 

यह उपयोग करने के लिए या तो शून्य या अगर यह इसे बाहर याद करेंगे जाते @ ""। यानी यह स्ट्रिंग की लंबाई पाता है, और यदि यह 0 है (यदि स्ट्रिंग खाली या शून्य हो तो यह मामला होगा) यह IF कमांड निष्पादित नहीं करता है।

+0

+1 - बहुत बेहतर तरीका – jrtc27

+0

यह काम, शुरुआत में नकारात्मक के अलावा। इसे हटाएं और यह '' या नल स्ट्रिंग के लिए काम करता है। धन्यवाद!लेकिन फिर भी, मुझे आश्चर्य है कि टेक्स्टफील्ड परिवर्तन पर ध्यान क्यों डालना टेक्स्ट मूल्य शून्य से '' है?! –

3

कैसे

if (![tmpField.text isEqualToString:@""]) 
  • के बारे में कि एक खाली स्ट्रिंग, नहीं एक शून्य स्ट्रिंग के लिए परीक्षण करती है।

स्ट्रिंग की लंबाई का परीक्षण करने सहित कई अन्य तरीके हैं। ध्यान दें कि आप किसी समस्या के बिना किसी शून्य ऑब्जेक्ट को संदेश भेज सकते हैं, इसलिए यदि tmpField.text शून्य था तो परीक्षण सफल होगा (और आप अपनी सरणी में एक शून्य ऑब्जेक्ट जोड़ने का प्रयास करते समय क्रैश करेंगे) - लेकिन आप जिस परीक्षण को चाहते हैं वह है NSString ऑब्जेक्ट को यह संदेश पूछताछ करें कि यह खाली है या नहीं।

+0

मदद मिलेगी यह काम करेंगे केवल तभी जब फ़ील्ड फोकस हो क्योंकि उसे एक स्ट्रिंग मिलती है। लेकिन अगर क्षेत्र को फोकस नहीं मिला है, तो आपको शून्य मिल गई है और यह परीक्षण विफल हो गया है। –

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