-2

我想以编程方式编写/删除datas.plist

我有一个视图,其中包含几个按标签区分的按钮。

我希望每次按下按钮时:

  • datas.plist的字典中写入一个新项目
  • 每个项目将包含按下按钮的标签 ID和其他数据

以及如何在另一个视图中以相同的方式删除该项目。

我使用此代码读取 datas.plist :

NSMutableDictionary *myDictionary;

NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"Data" offType:@"plist"];
[myDictionary writeToFile:@"Data" atomically:YES];
NSDictionnary *dict = [NSDictionnary dictionnaryWithContentOfFile:plistFile];

NSLog(@"%@", [dict objectForKey:@"Events"]);
4

1 回答 1

0

您发布的代码正试图在应用程序包中编写。强烈建议不要使用这种技术:据我所知,这样做可能会破坏捆绑包签名。

假设您有正当理由这样做,那么您的代码中还有其他错误。我会尝试修复它们,但请记住,您可能需要重新考虑您的算法。

[myDictionary writeToFile:plistFile atomically:YES];

我假设这是一个分散注意力的错误:您试图将 myDictionary 写入预定义的路径(很可能并不真正存在)。

代码的下一部分特别令人困惑。我将尝试回答主要问题。

您可以使用以下方法将条目添加到 NSDictionary:

- (void)setValue:(id)value forKey:(NSString *)key

他们使用以下方法将其删除:

- (void)removeObjectForKey:(id)aKey

因此,例如,您可以使用以下代码:

NSMutableDictionary *myDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:<filePath>];
[myDictionary setValue:@"SomeValues" forKey:@"DesiredKey"];
[myDictionary removeObjectForKey:@"DesiredKey"];

上面的代码从 加载一个 plist,然后将“SomeValues”作为键 @“DesiredKey”的对象添加到其中。然后,最后一条指令删除刚刚添加的对象(在本例中为“SomeValues”)。

于 2013-05-11T18:57:59.143 回答