Objective c 在NSMutableArray中使用plist时出错

Objective c 在NSMutableArray中使用plist时出错,objective-c,ios,uitableview,nsmutablearray,plist,Objective C,Ios,Uitableview,Nsmutablearray,Plist,所以我使用一个plist文件来存储一个NSMutableArray,当添加一个对象时,还将其保存到该plist文件中。但我得到了这个错误: Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 代码: 在“addObject”之后: 花了几个小时苦苦思索这个代码 提前谢谢 不应

所以我使用一个plist文件来存储一个NSMutableArray,当添加一个对象时,还将其保存到该plist文件中。但我得到了这个错误:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
代码:

在“addObject”之后:

花了几个小时苦苦思索这个代码


提前谢谢

不应该是
NSString*documentsDirectory=[path objectAtIndex:0]


您得到的错误是越界错误。这意味着您正在向数组请求索引高于其最高索引的对象。在这种情况下,即使最高索引为0(数组中只有一个对象),您仍在请求索引1处的对象(第二个对象)。

这不应该是
NSString*documentsDirectory=[path objectAtIndex:0]


您得到的错误是越界错误。这意味着您正在向数组请求索引高于其最高索引的对象。在这种情况下,即使最高索引为0(数组中只有一个对象),您仍在请求索引1处的对象(第二个对象)。

Uh,将1更改为0获取此错误:由于未捕获的异常“NSRangeException”终止应用程序,原因:'***-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的边界'Btw,如果数组可能只包含一个项,我更喜欢使用
[ar lastObject]
,因为如果没有任何项,它将以静默方式返回nil。它将包含用户添加的所有项。在哪一行会出现错误?我没有看到任何其他的``objectForIndex:`调用。这是我用来添加对象的代码。呃,将1更改为0获取此错误:由于未捕获的异常“NSRangeException”而终止应用程序,原因:“***-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的边界”顺便说一句,如果数组可能只包含一项,我更喜欢使用
[ar lastObject]
因为如果没有任何项目,它将以静默方式返回nil。它将包含用户添加的所有项目。您在哪一行收到错误?我没有看到任何其他的``objectForIndex:`调用。这是我用来添加对象的代码。首先,在尝试访问其任何元素之前,检查path是否为nil。然后,在尝试访问其元素时,检查数组是否包含足够的元素(大于0)。实际上,您可以跳过第一步,因为即使该数组为nil,也会返回0。首先,在尝试访问其任何元素之前,请检查路径是否为nil。然后,在尝试访问其元素时,检查数组是否包含足够的元素(大于0)。实际上,您可以跳过第一步,因为即使该数组为nil,它也将返回0。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:1];
_prsPath = [documentsDirectory stringByAppendingPathComponent:@"records.plist"];

prs = [[NSMutableArray alloc] initWithContentsOfFile:_prsPath];

if (prs == nil) {
    prs = [NSMutableArray array];
}
[prs writeToFile:_prsPath atomically:YES];