gpt4 book ai didi

ios - 如何从 plist 中添加行类型数组中的项目?

转载 作者:行者123 更新时间:2023-11-29 03:33:49 25 4
gpt4 key购买 nike

我有一个具有以下结构的 plist:

-root (dictionary)
-windows (array)

我需要将项目添加到行窗口中,如下所示:

-root (dictionary)
-windows (array)
-item0 value 1
-item1 value 2

我有这些行:

 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];

但他们只是将 Window 行的类型更改为字符串并写入我插入的最后一个值。

我该怎么做?

坦克

最佳答案

data 是一个 NSMutableDictionary。所以我们像这样得到键“windows”的数组:

NSMutableArray *windowsArray=[data objectForKey:@"windows"];

然后你可以像这样添加到这个数组:

[windowsArray addObject:myString];

在您的代码中,当您执行 [data setObject:idWindow forKey:@"Windows"]; 时,您将整个窗口数组替换为对象 idWindow。这就是为什么您最终只得到最终字符串的原因。

以下是一个完整的代码片段,它从应用程序包中读取一个 plist,在 windows 数组中添加 2 个字符串并将其保存在文档目录中:

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];

希望这对您有所帮助。

关于ios - 如何从 plist 中添加行类型数组中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com