Ios 如何从plist在行类型数组中添加项?
我有一个具有下一个结构的plist:Ios 如何从plist在行类型数组中添加项?,ios,objective-c,arrays,plist,Ios,Objective C,Arrays,Plist,我有一个具有下一个结构的plist: -root (dictionary) -windows (array) 我需要将项目添加到行窗口中,如下所示: -root (dictionary) -windows (array) -item0 value 1 -item1 value 2 NSMutableArray *windowsArray=[data objectForKey:@"windows"]; [windowsArray addObject:myString]
-root (dictionary)
-windows (array)
我需要将项目添加到行窗口中,如下所示:
-root (dictionary)
-windows (array)
-item0 value 1
-item1 value 2
NSMutableArray *windowsArray=[data objectForKey:@"windows"];
[windowsArray addObject:myString];
我有以下几行:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Windows.plist"];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
[data setObject:idWindow forKey:@"Windows"];
[data writeToFile: path atomically:YES];
但它们只将窗口行的类型更改为字符串,并写入我插入的最后一个值
我该怎么做
坦克
数据
是一个NSMutableDictionary。因此,我们得到键“窗口”的数组,如下所示:
-root (dictionary)
-windows (array)
-item0 value 1
-item1 value 2
NSMutableArray *windowsArray=[data objectForKey:@"windows"];
[windowsArray addObject:myString];
然后,您可以向该阵列添加以下内容:
-root (dictionary)
-windows (array)
-item0 value 1
-item1 value 2
NSMutableArray *windowsArray=[data objectForKey:@"windows"];
[windowsArray addObject:myString];
当您执行[data setObject:idWindow forKey:@“Windows”]时,在代码中代码>用对象idWindow替换整个windows数组。这就是为什么你最终只得到了最后一根弦
以下是一个完整的代码片段,它从应用程序包内部读取plist,在windows数组中添加2个字符串,并将其保存在documents目录中:
NSMutableDictionary *data=[NSMutableDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"EmptyWindows" ofType:@"plist"]];
NSLog(@"data: %@", data);
NSMutableArray *windowsArray=[data objectForKey:@"windows"];
NSLog(@"windows: %@", windowsArray);
[windowsArray addObject:@"TestString1"];
[windowsArray addObject:@"TestString2"];
NSLog(@"windows after add: %@", windowsArray);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Windows.plist"];
[data writeToFile:path atomically:YES];
希望这能有所帮助。您好,我已将您提到的行更改为:“NSMutableArray*windowsArray=[[NSMutableArray alloc]initWithArray:[data objectForKey:@“windows”]];”,在plist中要写入的部分中,我更改了这个“[windowsArray writeToFile:path Atomicaly:YES];”,但是工作不正常,现在它将根行更改为数组,并继续存储我输入的最后一个值