【问题标题】:Getting Error Domain=NSCocoaErrorDomain Code=261 with simple case使用简单案例获取错误域 = NSCocoaErrorDomain 代码 = 261
【发布时间】:2013-03-31 00:17:52
【问题描述】:

我有以下代码。 path 是我的包中文件的包路径。

    _dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    NSError *error;
    NSString *string = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

我不明白的是 _dictionary 变量看起来不错。它能够获取内容并将其转换为字典。但是,将文件转换为字符串的简单情况给了我一个错误:

$2 = 0x12eb3d50 Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)" UserInfo=0x12eb3550 {NSFilePath=/Users/ben/Library/Application Support/iPhone Simulator/6.1/Applications/82CBC7A6-2C4C-4330-9B29-7940C961B5B7/FMA.app/Licenses.plist, NSStringEncoding=4}

如何将 PLIST 文件读取为简单的 XML 字符串?我检查了编码并且文件是 UTF-8 编码的(也由 XML 内容标题指示)。如果我将编码更改为其他内容,我不会收到错误消息,但字符串是乱码!有什么想法吗?

【问题讨论】:

    标签: ios nsstring plist runtime-error initwithcontentsoffile


    【解决方案1】:

    如果 Xcode 将 plist 文件复制到您的应用程序包中,那么您应该确保它被复制为 XML 文件而不是二进制文件(这似乎是现在的默认设置)。

    在 Xcode 中,转到您的项目,选择目标,转到构建设置,搜索“属性”,将“属性列表输出编码”的下拉设置更改为 XML。

    【讨论】:

    • 我试过 usedEncoding 并得到以下错误和编码:(NSStringEncoding) $3 = 13635557$4 = 0x09277b00 Error Domain=NSCocoaErrorDomain Code=264 "The operation couldn’t be completed. (Cocoa error 264.)" UserInfo=0x92772d0 {NSFilePath=/Users/ben/Library/Application Support/iPhone Simulator/6.1/Applications/82CBC7A6-2C4C-4330-9B29-7940C961B5B7/FMA.app/Licenses.plist}
    • 在这种情况下,试试 NSPropertyListSerialization: + (id)propertyListWithData:(NSData *)data options:(NSPropertyListReadOptions)opt format:(NSPropertyListFormat *)format error:(NSError **)error --- plist 实际上是二进制格式的吗?
    • 我可以在文本编辑中打开它,所以它不是二进制格式。如何从 NSPropertyListSerialization 中获取文件的字符串?我这样做的原因是因为我想在NSDictionary 中获取键的顺序,但是当我做[[NSMutableDictionary alloc] initWithContentsOfFile:path] 时,键的顺序当然是不确定的,所以我需要解析文件以查看键在文件中排序。
    • 键的顺序有什么意义?您实际上想对 plist 中的数据做什么?
    • 这是一个将键映射到 id 集的列表。我在UITableView 中显示键,但它们需要按照客户想要的方式排序(不是按字母顺序)。
    猜你喜欢
    • 2017-06-16
    • 2018-08-18
    • 2020-05-06
    • 2018-04-08
    • 2015-03-11
    • 2018-07-21
    • 2020-03-14
    • 2016-07-10
    • 2016-02-26
    相关资源
    最近更新 更多