zoukankan      html  css  js  c++  java
  • __NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance

    同样是删除cell问题,帮我看看问题出现在哪,谢谢!

    我的类文件myFile是继承UIViewController的(目的是为了能够在一个view里切换不同的tableView),在myFile.h中定义一个可变数组editContactsList,然而在IB里面添加了一个view,两个tableView,在下面方法里面报错(有注明具体位置)

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {
    // Delete the row from the data source.
    NSUInteger row = [indexPath row];
    [tableView beginUpdates];
    NSLog(@"%@",self.editContactsList);//打印到数组内容

    [self.editContactsList removeObjectAtIndex:row];//此处报错,错误信息在下面
            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    [tableView endUpdates];
    [tableView reloadData];
        } 
    }
    错误信息:
    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 0x5e88f90'
    *** Call stack at first throw:
    (
    0   CoreFoundation                      0x0214ebe9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x022a35c2 objc_exception_throw + 47
    2   CoreFoundation                      0x021506fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x020c0366 ___forwarding___ + 966
    4   CoreFoundation                      0x020bff22 _CF_forwarding_prep_0 + 50
    5   Etisalat                            0x0014cb39 -[GMViewController tableView:commitEditingStyle:forRowAtIndexPath:] + 211
    6   UIKit                               0x014232ea -[UITableView(UITableViewInternal) animateDeletionOfRowWithCell:] + 101
    7   UIKit                               0x013b9a6e -[UIApplication sendAction:to:from:forEvent:] + 119
    8   UIKit                               0x014481b5 -[UIControl sendAction:to:forEvent:] + 67
    9   UIKit                               0x0144a647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    10  UIKit                               0x014491f4 -[UIControl touchesEnded:withEvent:] + 458
    11  UIKit                               0x013de0d1 -[UIWindow _sendTouchesForEvent:] + 567
    12  UIKit                               0x013bf37a -[UIApplication sendEvent:] + 447
    13  UIKit                               0x013c4732 _UIApplicationHandleEvent + 7576
    14  GraphicsServices                    0x0328ba36 PurpleEventCallback + 1550
    15  CoreFoundation                      0x02130064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    16  CoreFoundation                      0x020906f7 __CFRunLoopDoSource1 + 215
    17  CoreFoundation                      0x0208d983 __CFRunLoopRun + 979
    18  CoreFoundation                      0x0208d240 CFRunLoopRunSpecific + 208
    19  CoreFoundation                      0x0208d161 CFRunLoopRunInMode + 97
    20  GraphicsServices                    0x0328a268 GSEventRunModal + 217
    21  GraphicsServices                    0x0328a32d GSEventRun + 115
    22  UIKit                               0x013c842e UIApplicationMain + 1160
    23  **(这里代表工程名)                   0x0013c914 main + 114
    24  **(这里代表工程名)                   0x00004081 start + 53
    )
    terminate called after throwing an instance of 'NSException'
    Program received signal:  “SIGABRT”.
    (gdb) 


    麻烦各位大侠帮忙看看,指点指点,本人菜鸟,被它搞到头大了,谢谢

    引用第1楼coco89718于2011-07-19 11:00发表的  :
    你用的是NSArray吗,要用NSMutableArray。
    如果头文件定义的editContactsList是NSMutableArray类型,那在初始化的时候是不是
    self.editContactsList = [[NSArray alloc] init]把他初始化成了NSArray呢 





    谢谢!确实是这个原因。
    我在viewDidLoad里面这样为editContactsList赋值:
    NSMutableArray *arr  =[ [NSArray alloc] initWithObjects:@"a",@"b",@"c",nil];
    self. editContactsList = arr;
    [arr release];
    就会出现上面的错误,后来改成了下面的方法就通过了:
    NSArray *arr = [[NSArray alloc]initWithObjects:@"a",@"b",@"c",nil];
    [NSMutableArray arrayWithCapacity:10];
    [editContactsList setArray:arr];
    [arr release];

    转:http://www.cocoachina.com/bbs/simple/?t67161.html

  • 相关阅读:
    怎么看到数据库以前做过的日志?
    感觉很好的网站
    uview 滑动切换
    Flyweight享元(结构型模式)
    悟空,真的是空?
    Interpreter解释器(行为型模式)
    Proxy代理(结构型模式)
    [转]有一种爱叫索取
    Command命令(行为型模式)
    Composite组合(结构型模式)
  • 原文地址:https://www.cnblogs.com/ygm900/p/3742643.html
Copyright © 2011-2022 走看看