2012-11-10 17 views
15

मैं UITableview के साथ काम कर रहा हूं, मैं टेबलव्यू सेल पर छवि, शीर्षक, दिनांक और स्थान का नाम प्रदर्शित कर रहा हूं। जब मैं टेबलव्यू सेल पर क्लिक करता हूं विस्तृत दृश्य देखने के लिए विवरण.in.in निरंतर प्रक्रिया तालिकादृश्य पर नेविगेट करेगा। इसके बाद कुछ नेविगेशन के बाद जब मैं अपने UITableview सेल पर क्लिक करता हूं तो मेरा एप्लिकेशन क्रैश हो रहा है।- [__ NSPlaceholderArray initWithObjects: गिनती:]: वस्तुओं से शून्य ऑब्जेक्ट डालने का प्रयास करें [0] '

+1

कृपया अपना कोड पोस्ट करें ताकि हम कुछ मदद दे सकें। –

उत्तर

26

NSArray प्रत्येक तत्व के लिए ऑब्जेक्ट्स रखने के लिए डिज़ाइन किया गया है - nil किसी भी NSArray अनुक्रमणिका पर मान्य मान कभी नहीं है।

त्रुटि से पता चलता है कि आपका प्रोग्राम गैर-शून्य लंबाई के साथ एक सरणी बना रहा है, और यह कि पहला तत्व शून्य है।


कूबड़: आप एक शाब्दिक, के लिए कुछ बराबर घोषणा की है:

NSNumber * n = nil; 
NSArray * a = @[n]; // << runtime error creating this array 

बेशक, अपने कार्यक्रम के बजाय सीधे -[NSArray initWithObjects:count:] बुला जा सकता है।

0

इस प्रकार की दुर्घटनाओं से बचने के लिए मुझे सबसे अच्छा तरीका एनएसएससेट का उपयोग करना है जो शून्य तर्क प्राप्त कर सकता है और फिर आप '[कुछसेट ऑल ऑब्जेक्ट्स]' का उपयोग करते हैं जो आपको "शून्य मानों से साफ़" सरणी देगा।

इसके अलावा मैंने सेट के निर्माण को कम करने के लिए मैक्रो बनाने का विचार लिया। (स्रोत: Objective C literals for NSSet and NSOrderedSet?)