Ios 获取错误域=NSCOCAERRORDOMAIN Code=261,案例简单

Ios 获取错误域=NSCOCAERRORDOMAIN Code=261,案例简单,ios,nsstring,plist,runtime-error,initwithcontentsoffile,Ios,Nsstring,Plist,Runtime Error,Initwithcontentsoffile,我有以下代码。路径是指向我的捆绑包中的文件的捆绑包路径 _dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; NSError *error; NSString *string = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; 我不明白的是

我有以下代码。路径是指向我的捆绑包中的文件的捆绑包路径

    _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内容头所示。如果我将编码更改为其他内容,则不会出现错误,但字符串是乱码!有什么想法吗?

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


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

我尝试了usedEncoding,但得到了以下错误和编码:NSStringEncoding$3=13635557和$4=0x09277b00 error Domain=NSCOCAERRORDOMAIN Code=264操作无法完成。可可错误264。UserInfo=0x92772d0{NSFilePath=/Users/ben/Library/Application Support/iPhone Simulator/6.1/Applications/82CBC7A6-2C4C-4330-9B29-7940C961B5B7/FMA.app/Licenses.plist}在这种情况下,请尝试NSPropertyListSerialization:+idpropertyListWithData:NSData*数据选项:NSPropertyList收养选择格式:NSPropertyListFormat*格式错误:NSError**error plist实际上是二进制格式的吗?我可以在文本编辑中打开它,因此它不是二进制格式的。如何从NSPropertyListSerialization获取文件的字符串?我这样做的原因是因为我想获取NSDictionary中键的顺序,但是当我这样做时[[NSMutableDictionary alloc]initWithContentsOfFile:path]当然键的顺序是不确定的,所以我需要解析文件以查看键在文件中的顺序。键的顺序有什么意义?你到底想对plist中的数据做什么?它是一个将键映射到ID集的列表。我在UITableView中显示键,但它们需要按照客户希望的方式排序,而不是按字母顺序排序。