由于未捕获的异常“NSRangeException”而终止应用程序。 [__NSArrayM objectAtIndex:]:索引 33 超出范围 [0 .. 32]'

Posted

技术标签:

【中文标题】由于未捕获的异常“NSRangeException”而终止应用程序。 [__NSArrayM objectAtIndex:]:索引 33 超出范围 [0 .. 32]\'【英文标题】:Terminating app due to uncaught exception 'NSRangeException'. [__NSArrayM objectAtIndex:]: index 33 beyond bounds [0 .. 32]'由于未捕获的异常“NSRangeException”而终止应用程序。 [__NSArrayM objectAtIndex:]:索引 33 超出范围 [0 .. 32]' 【发布时间】:2013-03-21 06:35:41 【问题描述】:

我有这个 ImportViewController.m

我正在从服务器的 xml 中提取和加载名称。 元素总数为 33。

- (void)viewDidLoad

    [super viewDidLoad];
    self.title = @"IMPORT";
    NSLog(@"User id = %@",currentUserId);

    //some code to send http request.............
    NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
    NSLog(@"str response:%@",str);
    NSURL *fileURL= [[NSURL alloc] initWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSData *xmlData = [[NSMutableData alloc] initWithContentsOfURL:fileURL];
    GDataXMLDocument *doc =[[GDataXMLDocument alloc] initWithData:xmlData options:0 error:nil];

    NSArray * names = [doc nodesForXPath:@"//contacts/contact/name/firstname" error:nil];

    for (GDataXMLElement *element in names) 
        // NSLog(@"name: %@ ",element.stringValue);
        [Option addObject:element.stringValue];
    

    [Option addObject:@"nil"];
    NSLog(@"count: %u ",[Option count]);

    for (CFIndex i=0; i<=[Option count]; i++) 
        NSLog(@"options item %lu: %@\n",i,Option[i]);
    

错误:由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArrayM objectAtIndex:]: index 33 beyond bounds [0 .. 32]” * 首先抛出调用栈:

【问题讨论】:

【参考方案1】:

你的线路

for (CFIndex i=0; i<=[Option count]; i++)

应该阅读

for (CFIndex i=0; i<[Option count]; i++)

【讨论】:

Ahsan: count 给出总计数,而数组的最后一个元素的索引小于那个。

以上是关于由于未捕获的异常“NSRangeException”而终止应用程序。 [__NSArrayM objectAtIndex:]:索引 33 超出范围 [0 .. 32]'的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArrayM objectAtIndex:]:索引 0 超出空数组的范围”

由于未捕获的异常“NSRangeException”而终止应用程序,原因:-[__NSArrayM objectAtIndex:]:索引 0 超出空数组的范围

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[__NSCFArray objectAtIndex:]: index (14) beyond bounds (14)”

由于未捕获的异常“NSRangeException”而终止应用程序,原因:-[__NSArrayM objectAtIndex:]:索引 0 超出空数组的范围-2

*** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0

*** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds fo