2011-03-22 42 views
0

我编写了一个将txt文件加载到数组中的方法。然而,我对它并不满意,因为它对我的初学者来说看起来非常麻烦(我确信我不需要我的代码的50%),我不知道如何指定我的txt的确切格式文件,例如NSUTF8StringEncoding。如何将txt文件加载到数组中

这里是我的代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory 

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Sample.txt"]; 

if (filePath) { // check if file exists - if so load it: 
    NSString *myText = [NSString stringWithContentsOfFile:filePath]; 
    if (myText) {textView.text=myText;} 
} 

有关如何擦亮这件事,并指定正确的格式任何建议,我会非常感激。

回答

-1

进入数组?你的意思是一个字符串,因为正是你在做什么......

但是,你的代码看起来不错,而且大部分只是抓住文档目录路径,这不是你的错,因为它是根据许多知识库,完全按照这种方式完成。

从编码开始,stringWithContentsOfFile已过时,请使用stringWithContentsOfFile:encoding:error :(请参阅文档) ,您将能够指定正确的编码并获得准确的错误描述。

+0

@Nick韦弗:据我所知,文件目录=资源目录 – gd1 2011-03-22 22:29:12

+1

谢谢!将相应地更新代码。 – 2011-03-23 08:34:17

+0

欢迎您,n.evermind – gd1 2011-03-24 20:31:37

1

尝试以下,假设你的文件是你的包:

NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"txt"]; 

NSError * error = nil; 

NSString * contentsOfFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; 
+1

获取filePath的方法在此处有所不同。您的答案假定Sample.txt与应用程序捆绑在一起。但是,如果它从应用程序的早期实例保存到文件中,则应该使用问题中的原始方法。 – darvids0n 2011-03-22 22:28:55

+0

这是正确的,我假定文件在捆绑中。将纠正我的答案。 – 2011-03-22 22:31:18

+0

一旦你修复了这个错误,你应该用'stringWithContentsOfFile:encoding:error:'替换你的错误的方法调用。当您尝试将使用的编码写入地址4(NSUTF8StringEncoding的值)时,您使用的方法将为您提供ExcBadAccess。 – 2011-03-22 23:35:27

相关问题