2013-05-11 99 views
-2

我想以编程方式编写/删除datas.plist如何在空plist文件中轻松写入数据

我有一个视图,其中包含几个按钮,它们的区别在于它们的标签

我希望在每次按下按钮时:

  • 写在dictionnary新项目,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"]); 
+2

请注意,如果您复制/粘贴*实际代码*([[NSDictionnary dictionnaryWithContentOfFile:...]'),那么好的答案的机会会更好?) – 2013-05-11 18:39:59

+0

那么,什么问题? – DrummerB 2013-05-11 18:40:55

+1

[861其他问题]可能的重复(http://stackoverflow.com/search?q=write+to+plist+is%3Aquestion) – 2013-05-11 18:48:54

回答

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”作为key @“DesiredKey”的对象。然后,最后一条指令删除刚刚添加的对象(本例中为“SomeValues”)。

+0

好吧,忘了[myDictionary writeToFile:plistFile atomically:YES];我明白我的错误,所以现在我想添加/删除一个条目到datas.plist文件 我怎样才能使用你的2种方法来做到这一点? 对不起,我会尝试拥有一个正确的英语。 – Crossmax 2013-05-11 19:37:48