iphone - 从字典到 URL 写入/读取的奇怪行为

标签 iphone ios ipad nsurl nsfilemanager

我一直在整个网站上寻找类似的问题,但我发现的任何其他问题的修复都没有帮助,所以也许我看错了或者是什么。无论如何,这是我的代码:

NSFileManager *fm = [[NSFileManager alloc] init];
NSError *err = nil;
NSURL *ASD =  [fm URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:&err];

if (!err) {
    NSLog(@"writing file");
    NSURL* path = [NSURL URLWithString:@"license.plist" relativeToURL:ASD];
    [dict writeToURL:path atomically:NO];
    NSString* content = [NSString stringWithContentsOfURL:path encoding:NSUTF8StringEncoding error:&err];
    if (!err) {
        NSLog(@"File:%@",content);
    }
    else
    {
        NSLog(@"Error opening file: %@",err);
    }
    return YES;
}

鉴于 dict 是有效的字典(编辑:做出了错误的假设,即使文件为空,它仍然会初始化字典,因此即使文件为空,也添加了一个空的 init) ,我收到以下日志消息:

2011-09-07 15:59:58.883 iActNow[10572:707] writing file 2011-09-07 15:59:58.889 iActNow[10572:707] Error opening file: Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x4ba4d0 {NSFilePath=/var/mobile/Applications/6BA775C6-29F6-4362-8860-9ADF84598531/Library/Application Support/license.plist, NSUnderlyingError=0x497080 "The operation couldn’t be completed. No such file or directory"}

因此,无论出于何种原因,它实际上并没有写入文件。有什么想法吗?

最佳答案

我通过替换此调用来测试您的代码:

[dict writeToURL:path atomically:NO];  

这个:

[@"Foo" writeToURL:path atomically:NO];

并且文件已正确存储。

我敢打赌,在 dict 中,您持有一个自定义对象,而 NSDictionary 无法根据定义(即按照 Apple 规范)写入文件。您可能必须使用不同的方式将数据存储到文件中 - 也许 Archives and Serializations Programming Guide可以帮你?

编辑:我刚刚注意到您将文件命名为“license.plist” - 请查看Property List Programming Guide的“读取和写入属性列表数据”部分。

关于iphone - 从字典到 URL 写入/读取的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340589/

相关文章:

iphone - iOS SDK 4.3.3,在哪里可以找到它?

ios - 切换 View Controller 时连续播放音乐 - Swift 4.2

ios - 具有相同优先级操作的 GCD 并发队列?

ios - 字符串数组的安全数据持久性

ios - iOS7 UIToolbar 上缺少阴影(细线)

ios - 如何从 modalViewController PushViewController

iphone - 使用 iPhone 地址簿联系人创建电子名片

iphone - `iphone sdk 中的多个单选按钮验证

iphone - 从 AVCaptureVideoDataOutput 视频帧保存电影

ios - 在 2 个窗口和 IOS 应用程序中显示不同的内容