我有两个不同的plist文件的两个数组init,plist文件位于文件夹内,不在包中,因此可以编辑。
progress = [[NSMutableArray alloc] initWithContentsOfFile:[self progressFilePath]];
easy = [[NSMutableArray alloc] initWithContentsOfFile:[self easyFilePath]];
进展plist是空的,简单就是:
<array>
<dict>
<key>TitleEN</key>
<string>Hunter</string>
<key>Status</key>
<integer>0</integer>
<key>Image</key>
<string></string>
</dict>
</array>
现在在我的视图中我有一个tableView加载easy,我希望元素按下行,如果它的状态为0则转到进度plist,为dog.png中的关键Image设置对象正在进行中。 plist还为关键状态设置了对象0但在简单状态中。我用这个做了一切:
NSNumber *status = [[easy objectAtIndex:indexPath.row] objectForKey:@"Status"];
if ([status intValue] == 0) {
[progress addObject:[easy objectAtIndex:indexPath.row]];
int progresstot = [progress count];
for (int i=0; i<progresstot; i++) {
if ([[progress objectAtIndex:i] objectForKey:@"TitleEN"] == [[easy objectAtIndex:indexPath.row] objectForKey:@"TitleEN"]) {
[[progress objectAtIndex:i] setObject:@"dog.png" forKey:@"Image"];
}
}
[progress writeToFile:[self progressFilePath] atomically:YES];
[[easy objectAtIndex:indexPath.row] setObject:[NSNumber numberWithInt:1] forKey:@"Status"];
[easy writeToFile:[self easyFilePath] atomically:YES];
}
一切正常,但我无法理解为什么在这个方法的最后我有我的progress.plist与我的元素dog.png但我也有dog.png轻松的。 (状态仅在easy上更新,并且在两者上都很好但是dog.png)。 有人可以帮帮我吗?我无法理解什么是错的。
答案 0 :(得分:0)
[progress addObject:[easy objectAtIndex:indexPath.row]];
将对象 p1 == [easy objectAtIndex:indexPath.row] 添加到进度数组,现在进度数组保留为 p1 并将其作为其元素之一。它没有创建新对象,它保留了现有的 - p1 。
for (int i=0; i<progresstot; i++) {
if ([[progress objectAtIndex:i] objectForKey:@"TitleEN"] ==
[[easy objectAtIndex:indexPath.row] objectForKey:@"TitleEN"])
{
[[progress objectAtIndex:i] setObject:@"dog.png" forKey:@"Image"];
}
}