1

我在 stackoverflow 上阅读了很多关于此的问题,并且我确保在首次运行时将我的 plist 文件从捆绑包复制到文档目录。但是,现在当我尝试写入这个 plist 文件时,它没有成功写入。

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 文件正在被复制到文档目录中,因为我可以在管理器和我的设备选项卡中看到它。我也能够成功地从文档目录中读取文件。

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

4

2 回答 2

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。

于 2012-08-04T13:07:37.673 回答
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];
于 2012-08-04T13:22:39.143 回答