0

我在应用程序包中有一个大约 2.2 mb 数据的 csv 文件。我正在尝试将此 csv 文件的内容存储在一个NSString变量中。用于此的代码是:

   NSString *strBundle = [[NSBundle mainBundle] pathForResource:@"large" ofType:@"csv"];
   NSError *error = nil;
   NSString *dataStr = [NSString stringWithContentsOfFile:strBundle
                                                  encoding:NSUTF8StringEncoding
                                                     error:&error];

但是,上面的代码不会将文件的文本存储在 dataStr 变量中。相反,我收到以下错误消息:

错误=错误域=NSCocoaErrorDomain 代码=261“操作无法完成。(Cocoa 错误 261。)”UserInfo=0x1fdab580 {NSFilePath=/var/mobile/Applications/0C68E393-FBBE-45F6-819E-336D31C78043/DemoApp。 app/large.csv, NSStringEncoding=4}

如果我删除了文件的内容,使文件相对小于 2.2 mb,则上面的代码可以正常工作并获取 dataStr 变量中的字符串值。有人可以告诉我为什么会这样。可以存储在NSString变量中的数据量是否有任何限制。那么如何存储CSV文件的数据呢?

4

1 回答 1

5

NSCocoaErrorDomain 代码=261 是:NSFileReadInapplicableStringEncodingError。

读取错误,因为字符串编码不适用。NSStringEncodingErrorKey使用密钥从 userInfo 字典中访问错误编码。

这将表明该文件不是NSUTF8StringEncoding.

您可以使用: - (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

它将返回编码或错误。

通过从路径命名的文件中读取数据来初始化的 NSString 对象。返回的对象可能与原始接收者不同。如果文件无法打开或存在编码错误,则返回 nil。

苹果文档

于 2013-02-02T19:12:33.363 回答