ios - 由于未捕获的异常 'NSRangeException' 而终止应用程序,原因 : '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array

标签 ios objective-c uitableview nsrangeexception

<分区>


关闭 6 年前

所以我有一个 UITableView,每当数组中没有任何项目时,应用程序就会崩溃并出现此错误。奇怪的是,我有另一个表,当它在数组中有零个对象时不会崩溃,而且我为每个表使用几乎相同的代码。这是我所拥有的:

@implementation FindFBFriendsViewController {
    NSMutableArray *friends;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UserFBFriends *fbFriends = [UserFBFriends sharedInstance];
    NSLog(@"Hell0 from the fbfriends view, array is %@", fbFriends.userFriends);
    friends = [[NSMutableArray alloc] initWithArray:fbFriends.userFriends];

    IndFBFriend *testFriend = [friends objectAtIndex:0];
    NSLog(@"USER Friends:    %@", testFriend.fullName);
}

-(void)viewWillAppear:(BOOL)animated {
    [self.fbTableView reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [friends count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     FBFriendCell *cell = [tableView dequeueReusableCellWithIdentifier:@"friendCell" forIndexPath:indexPath];

    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"FBFriendCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    IndFBFriend *indexRowFriend = [friends objectAtIndex:indexPath.row];
    [cell updateCellWithName:indexRowFriend.fullName profilePicture:indexRowFriend.profPic personFBId:indexRowFriend.fbId];

    cell.backgroundColor = [UIColor clearColor];
    return cell;
}

这是堆栈:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000106213d85 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010597adeb objc_exception_throw + 48
    2   CoreFoundation                      0x00000001060f1804 -[__NSArrayM objectAtIndex:] + 212
    3   gif-wrap                            0x000000010338dd24 -[FindFBFriendsViewController viewDidLoad] + 340
    4   UIKit                               0x000000010421b984 -[UIViewController loadViewIfRequired] + 1198
    5   UIKit                               0x000000010422193b -[UIViewController __viewWillAppear:] + 120
    6   UIKit                               0x0000000104251750 -[UINavigationController _startCustomTransition:] + 1203
    7   UIKit                               0x0000000104261b9b -[UINavigationController _startDeferredTransitionIfNeeded:] + 712
    8   UIKit                               0x0000000104262d0b -[UINavigationController __viewWillLayoutSubviews] + 57
    9   UIKit                               0x0000000104411503 -[UILayoutContainerView layoutSubviews] + 248
    10  UIKit                               0x000000010413b980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703
    11  QuartzCore                          0x0000000109754c00 -[CALayer layoutSublayers] + 146
    12  QuartzCore                          0x000000010974908e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
    13  QuartzCore                          0x0000000109748f0c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
    14  QuartzCore                          0x000000010973d3c9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277
    15  QuartzCore                          0x000000010976b086 _ZN2CA11Transaction6commitEv + 486
    16  UIKit                               0x000000010407b72e _UIApplicationHandleEventQueue + 7135
    17  CoreFoundation                      0x0000000106139301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    18  CoreFoundation                      0x000000010612f22c __CFRunLoopDoSources0 + 556
    19  CoreFoundation                      0x000000010612e6e3 __CFRunLoopRun + 867
    20  CoreFoundation                      0x000000010612e0f8 CFRunLoopRunSpecific + 488
    21  GraphicsServices                    0x0000000109204ad2 GSEventRunModal + 161
    22  UIKit                               0x0000000104080f09 UIApplicationMain + 171
    23  gif-wrap                            0x00000001033922ef main + 111
    24  libdyld.dylib                       0x000000010752892d start + 1
    25  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

有人知道我该如何解决这个问题吗?

最佳答案

使用 IndFBFriend *testFriend = [friends firstObject]; 更安全。

关于ios - 由于未捕获的异常 'NSRangeException' 而终止应用程序,原因 : '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813605/

上一篇:ios - UIView 过渡不符合预期

下一篇:ios - 无法将第二个 View Controller 嵌入到第一个 View Controller 之上

相关文章:

iphone - 如果我对在 VMware 上运行的 OS X 感到满意,我真的必须购买 Mac 才能为 App Store 开发吗?

ios - 如何解析 JSON 响应

objective-c - UINavigationController 仅显示一半的导航栏

ios - 从 Swift 框架访问委托(delegate)协议(protocol)到 Objective C

objective-c - 带分页和动量的 UITableView

ios - UIStepper 没有更新相应的标签

集成 Sharekit 后 iPhone 应用程序无法在设备上运行

ios - 对象-c/iOS :How to use ASynchronous to get a data from URL?

objective-c - 在iPhone中解析相同的元素名称

ios - 自定义单元格的刷新控制问题 - Swift 4 IOS 11