2010-01-28 10 views
16

मेरे ऐप में, मैं अपने UITableViewCells लोड करने के लिए एक कस्टम एनआईबी का उपयोग करता हूं। एनआईबी के फाइल का मालिक सेट है इसलिए कक्षा मेरा व्यू कंट्रोलर है। मैं फिर यूआईटीबल व्यूसेल को आईबीओटलेट में हेडर फ़ाइल में डालता हूं। यह सब ठीक काम कर रहा है, जब तक अचानक यह काम करना बंद कर गया था, और इस त्रुटि हो जाता है:अजीब UITableViewCell लोडिंग अपवाद

uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (UITableViewCellContentView)' 

मैं करने के लिए इस अपवाद का पता लगाया है [NSBundle loadNibNamed: मालिक: विकल्प:]

static NSString *CellIdentifier = @"SubjectCell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
[[NSBundle mainBundle] loadNibNamed:@"SubjectCell" owner:self options:NULL]; 
cell = customSubjectCell; 

मैं दो उपकरणों और सिम्युलेटर पर यह कोशिश की है, लेकिन सभी एक ही त्रुटि प्राप्त करते हैं। मैंने आज नया एसडीके डाउनलोड किया, और मुझे लगता है कि इससे इसका कारण हो सकता है।


कृपया ध्यान दें:

यह सवाल पुरानी हो चुकी है, और नीचे ठीक एक अस्थायी ठीक था। ऐप्पल ने अपना एसडीके तय कर दिया है, इसलिए यदि आपके पास एसडीके का नवीनतम संस्करण है तो यह आपके लिए लागू नहीं है।

उत्तर

26

मिले समाधान

इस फ़ाइलें बनाएँ:

UITableViewCellContentView.h

#import <UIKit/UIKit.h> 
@interface UITableViewCellContentView : UIView { 
} 
@end 

UITableViewCellContentView.m

#include "UITableViewCellContentView.h" 
@implementation UITableViewCellContentView 

+ (id)alloc { 
    return [UIView alloc]; 
} 

+ (id)allocWithZone:(NSZone *)zone { 
    return [UIView allocWithZone:zone]; 
} 

@end 
+1

यह बस काम करता है! बहुत बहुत धन्यवाद। – Jirapong

+0

आपको बहुत बहुत धन्यवाद! यह मुझे पागल ड्राइव शुरू कर रहा था !! (हालांकि .h फ़ाइल के अंत में एक "@end" गायब है) – nmondollot

+0

धन्यवाद एक टन! यह काम! लेकिन मौजूदा परियोजनाओं को तोड़ना क्यों है? – Mugunth

7

उह ओह। मुझे एक ही समस्या है ... आज भी नए एसडीके (01/28/2010) का उपयोग करना। यह सुनिश्चित करने के लिए नहीं कह सकता कि कोड पहले काम कर रहा था, क्योंकि मैंने इसे नए एसडीके में अपडेट करने के बाद जोड़ा था।

कोई और इस मुद्दे को अब देख रहा है? कोई समाधान?

अद्यतन: मैंने सिम्युलेटर को एसडीके 3.2 (3.12 से) पर स्विच किया, और व्हाटटाया पता है ... यह अब काम कर रहा है (आईफोन और आईपैड सिम्युलेटर में)। हालांकि, एसडीके 3.12 का उपयोग करते समय संकलन करते समय यह काम नहीं करता है।

मेरा अनुमान है कि आईबी 3.2 के लिए नए प्रारूप में एक्सआईबी को बचा रहा है? किसी को पता है कि पुराने (3.12) प्रारूप में इसे बचाने के लिए इसे कैसे मजबूर किया जाए? यह निश्चित रूप से एक बग की तरह लगता है, क्योंकि यह पहले से काम कर रहा कोड तोड़ रहा है। देव मंचों में

1

मैं एक ही बात थी। 3.1.2 से 3.2 बीटा स्थापित किया गया था और यह त्रुटि थी।

अंत में यह तय किया गया: सिम्युलेटर 3.1 के खिलाफ पुनर्निर्माण और मुझे सिम्युलेटर में एक कामकाजी निर्माण मिला। इसके बाद, सिम्युलेटर 3.1.2 काम के खिलाफ बनाता है।