2011-08-05 52 views
0

我有一個UITableView多節。我有一個NSMutableArray作爲DataSource(floorArray)。當我重新加載tableview數據時,我得到[FloorGroup count]: unrecognized selector sent to instance 0x5c18fc0。我的ViewController實現了UITableViewDelegate和UITableViewDataSource。我看不到任何我打電話給的FloorGroup對象。UITableViewDelegate問題

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [floorArray count]; 

} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    FloorGroup *group = [floorArray objectAtIndex:section]; 
    return group.floorName; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    FloorGroup *group = [floorArray objectAtIndex:section]; 
    NSMutableArray *areasOnFloor = group.areas; 
    NSUInteger count = [areasOnFloor count]; 
    return count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    FloorGroup *group = [floorArray objectAtIndex:[indexPath section]]; 

    static NSString *identity = @"MainCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identity]; 

    if(cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(0.0, 0.0, 0.0, 0.0) reuseIdentifier:identity] autorelease]; 
    } 
    cell.text = [group.areas objectAtIndex:indexPath.row]; 

    return cell; 
} 

我的類定義是:

@interface FloorGroup : NSObject { 
    NSString *floorName; 
    NSMutableArray *areas; 
} 

@interface FloorArea : NSObject { 
    NSString *floor; 
    NSString *description; 
    NSDecimalNumber *area; 
    NSDecimalNumber *price; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
} 

確切的錯誤是:

2011-08-05 10:54:58.692 com.Lime49.myApp[1987:207] -[FloorGroup count]: unrecognized selector sent to instance 0x5d93c90 
2011-08-05 10:54:58.694 com.Lime49.myApp[1987:207] NSInvalidArgumentException 
2011-08-05 10:55:02.321 com.Lime49.myApp[1987:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FloorGroup count]: unrecognized selector sent to instance 0x5d93c90' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x0139f5a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x014f3313 objc_exception_throw + 44 
    2 CoreFoundation      0x013a10bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x01310966 ___forwarding___ + 966 
    4 CoreFoundation      0x01310522 _CF_forwarding_prep_0 + 50 
    5 UIKit        0x006492b7 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 1834 
    6 UIKit        0x00646d88 -[UITableViewRowData numberOfRows] + 108 
    7 UIKit        0x004fa677 -[UITableView noteNumberOfRowsChanged] + 132 
    8 UIKit        0x00507708 -[UITableView reloadData] + 773 
    9 Foundation       0x0020b94e __NSThreadPerformPerform + 251 
    10 CoreFoundation      0x013808ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 
    11 CoreFoundation      0x012de88b __CFRunLoopDoSources0 + 571 
    12 CoreFoundation      0x012ddd86 __CFRunLoopRun + 470 
    13 CoreFoundation      0x012dd840 CFRunLoopRunSpecific + 208 
    14 CoreFoundation      0x012dd761 CFRunLoopRunInMode + 97 
    15 GraphicsServices     0x01b3c1c4 GSEventRunModal + 217 
    16 GraphicsServices     0x01b3c289 GSEventRun + 115 
    17 UIKit        0x0049ac93 UIApplicationMain + 1160 
    18 com.Lime49.myApp    0x00002256 main + 84 
    19 com.Lime49.myApp    0x000021f9 start + 53 
) 
terminate called after throwing an instance of 'NSException' 
+0

你在哪裏添加數組中的對象,並分配數組給這個code.also在哪個類。 – Ishu

回答

0

疼痛的問題。我在DAL中有大約20行代碼將XML元素樹解析爲Objective-C對象。我創建FloorGroups,將它們添加到字典中,然後在最後循環並將值轉換爲NSMutableDictionary。我不明白爲什麼編譯器甚至讓我這樣做或爲什麼它運行,但我只需要跳過最後一個循環。

1

你的錯誤的樣子上課的FloorGroup而非floorArray指針的對象。

您的數組已被釋放,並且其佔用的內存由FloorGroup對象佔用。調試你的floorArray是否有對象。

+0

從main.m拋出異常,當我在numberOfRowsInSection中調試時,floorArray已經加載幷包含四個對象,然後我得到異常。 – Echilon

+0

可以控制在titleForHeaderInSection範圍內或在此之前,您的應用程序崩潰? – Ishu

+0

給你的數組初始化和對象添加的地方(代碼) – Ishu

0

你的floorArray可能已經發布了。

1

你在哪裏初始化'floorArray'?

嘗試做一個初始化,而不是在viewDidLoad中(圖試圖視圖嘗試加載之後對陣列進行初始化加載..怎麼做呢?)

+0

這是有道理的,但我在'viewDidLoad',然後'numberOfRowsInSection'和'titleForHeaderInSection',所有這些被調用的斷點。但是,cellForRowAtIndexPath不是 – Echilon

+0

仍然很奇怪,因爲如果NSMutableArray未初始化,count只返回0.因此,無論如何都不會顯示對象。看起來這個調用是在別的東西上調用的,然後是一個數組,也許是一個類? (也許你有一個重複的名字?,嘗試重命名你用來保存你的表數據的NSMutableArray)。編輯:我不是初始化floorArray對象? – Justin

相關問題