0

我有一个.plist具有这种结构的文件,

在此处输入图像描述

我想添加或替换第 5 项。我正在使用此代码

NSError *error ;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Introduction.plist"];

NSMutableArray *data = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSString *comment = str;
[data replaceObjectAtIndex:1 withObject:comment];
[data writeToFile:path atomically:YES];

NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:path]) {
    NSString *bundle = [[NSBundle mainBundle] pathForResource:@"Introduction" ofType:@"plist"];
    [fileManager copyItemAtPath:bundle toPath:path error:&error];
}

如果我改变replaceObjectAtIndex:5会改变我的 plist 结构,我不希望这样。

如何在特定索引的第 5 行(第 5 项)插入/替换文本?

4

1 回答 1

4

您的结构有一个数组数组。

[数据替换ObjectAtIndex:1 withObject:comment];

通过此代码,您将用字符串替换索引 1 处的数组。您是特别需要插入到第 5 个索引还是只需将其添加到现有的子数组中?

 NSMutableArray *subArray = [data[sectionIndex] mutableCopy];
if (!subArray) {
    subArray = [NSMutableArray array];
}

if (rowIndex<[subArray count]) {
    [subArray replaceObjectAtIndex:rowIndex withObject:comment];
}else{
    [subArray addObject:comment];
}

[data replaceObjectAtIndex:sectionIndex withObject:subArray];
[data writeToFile:path atomically:NO];

访问子数组,使其可变并在特定索引处添加或插入。如果您尝试插入,请不要忘记检查索引是否不大于该数组的计数。

于 2013-04-18T07:07:25.527 回答