2011-05-16 69 views
5

我的资源包中有一个plist,我通过文件夹引用进行复制。由于某种原因,我编辑的&保存(在Xcode中)plist不会被复制/更新,直到我删除应用程序。否则,旧的plist(在编辑之前)会被复制过来,即使我删除了该应用程序。数据是否遗留下来?构建&运行:plist没有更新

plist经常编辑,因此调试非常费时。我如何确保plist被正确复制?

+0

卸载并重新安装在调试环境中解决了我的问题...谢谢 – 2014-03-27 11:21:09

回答

1

你正在复制文档文件夹中的plist文件吗?如果您正在复制该文件,那么您必须在每次启动应用程序时从iPhone模拟器中删除该应用程序。

您也可以做一件事..您可以在每次启动应用程序时将文件复制到文档文件夹中。 由于文档文件夹的内容只能通过从模拟器/设备中删除应用程序来删除。

然后没有必要重新启动模拟器/设备和xcode。

+0

plist复制到资源包中,而不是在Documents中。所以我希望资源数据在应用程序被删除时被删除,但是单独删除应用程序不会。 – Morrowless 2011-05-16 06:42:03

+0

否来自资源的数据无法删除,您必须手动删除它。顺便说一句:如果你没有复制文件中的文件,那么你将无法编辑它。 – Saurabh 2011-05-16 06:43:46

+0

我应该清楚,编辑是在Xcode中完成的,而不是运行时。 – Morrowless 2011-05-16 06:49:11

0

这是一个laaate的答案;但是,嘿,OP没有标记正确的答案,所以这里是我的解决方案。我创建了两个属性列表。第一个是调试信息,如常数,字符串和布尔值。我把这个房产名单叫做SETTINGS.plist。我的另一个plist是我用来保存游戏数据的。由于SETTINGS plist是我通过xcode接口更新的,我每次运行应用程序时都会更新它。

-(void)setUpPlist{ 

listPath = [[self docsDir] stringByAppendingPathComponent:@"SETTINGS.plist"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:listPath]) { 
    [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:@"SETTINGS" ofType:@"plist"] toPath:listPath error:nil]; 

} 
else { 
    [[NSFileManager defaultManager] removeItemAtPath:listPath error:nil]; 
    [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:@"SETTINGS" ofType:@"plist"] toPath:listPath error:nil]; 
} 

savedData = [NSMutableDictionary dictionaryWithContentsOfFile:listPath]; 
} 

-(NSString *)docsDir{ 
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
} 

这里,listPath是NSString类型的,并且是savedDate NSMutableDictionary类型。希望这可以帮助。