2012-08-04 89 views
1

我阅读了很多关于此的stackoverflow的问题,我已经确保将我的plist文件从包中复制到第一次运行时的文档目录。但是,现在当我尝试写入这个plist文件时,它不能成功写入。无法写入plist文件iOS

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
NSString *documentsDirectory = [path objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"inAppList.plist"]; 
[infoDict setObject:[NSNumber numberWithInt:1] forKey:@"someKey"]; 
didWrite = [infoDict writeToFile:filePath atomically:YES]; 

didWrite出来是'不'。

我确信plist文件被复制到文档目录中,因为我可以在组织者和设备选项卡中看到它。此外,我能够从文档目录中成功读取文件。

可能只是一个很小的错误,但真的无法弄清楚什么是错的。

+0

你确定你的词典中包含PLIST唯一对象? – 2012-08-04 13:27:28

回答

1

类似的代码,代码可能象下面这样:

// get plist file path 
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
NSString *documentsDirectory = [path objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"inAppList.plist"]; 

// set '1' forKey "somebody" 
NSArray *objectArray = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:1],nil]; 
NSArray *keyArray = [[NSArray alloc] initWithObjects:@"someKey",nil]; 
NSDictionary *infodict = [[NSDictionary alloc] initWithObjects:objectArray forKeys:keyArray]; 

// write dictionary to file 
BOOL didWrite = [infodict writeToFile:filePath atomically:YES]; 
1
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

plistpath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"Product.plist"]]; 

然后

[array writeToFile:path atomically:YES]; 

[Whatever [Array or Dictionary] you want to Write in Plist] 

如果现在还没有创建的plist然后检查你的数组或字典是否必须是空的。

还有一件事:确保你没有在plist中插入空值。如果你尝试这样做......那么它也无法创建plist。

+1

在发布复制和粘贴样板/逐字回答多个问题时要小心,这些往往会被社区标记为“垃圾”。如果你这样做,那么它通常意味着问题是重复的,所以请将它们标记为:http://stackoverflow.com/a/11273284/419 – Kev 2012-08-04 17:06:48

+0

okkk .......感谢您的信息。我不知道这件事。从现在开始,我会关心这一点。 – Wolverine 2012-08-06 04:58:52