如何使用iPhone SDK下载文本文件?

8

我在开发基于视图的iPhone应用程序方面还比较新,我需要从互联网上下载这个“txt”文件并将其保存到应用程序的文档文件夹中。有人能简单地向我展示如何做到这一点吗?该txt文件非常小,因此我不需要任何用户界面对象...

谢谢,

Kevin

2个回答

11
NSError *err = nil;
NSString *url = [[NSString stringWithFormat:@"http://myurl.com/mypage"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *myTxtFile = [NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error:&err];
if(err != nil) {
    //HANDLE ERROR HERE
}

然后,您可以使用以下代码保存它:

[[NSUserDefaults standardUserDefaults] setObject:myTxtFile forKey:@"MyFile"];

并且要检索它:

NSString *myTxtFile = [[NSUserDefaults standardUserDefaults] stringForKey:@"MyFile"];

更新以反映Joe的意见


MyFile.txt会被放在哪里?我已经检查了文档,但它不在那里... - lab12
1
抱歉,它实际上不在文档文件夹中,而是在用户默认设置中。您可以使用我的答案中的最后一行检索它。它必须在文档文件夹中的特定原因吗? - David Kanarek
不,其实我以为在“文档”文件夹中会更容易找到。 :D - lab12
如果我想在UITextView中查看这个文本文件,你知道怎么做吗? - lab12
1
[myUITextView setText:myTxtFile]; - David Kanarek
请注意,在上面的代码中,您不需要分配一个NSError对象。只需将其初始化为nil,并将其地址传递到函数中即可。如果有错误要报告,stringWithContentsOfURL函数本身将为您分配一个(自动释放的)NSError对象。 - Joe Strout

1

嘿,你可以像这样将字符串内容写入文档文件夹中的文件:

//获取文档目录:

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

//使用文档目录创建一个文件名以写入数据:

NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt",documentsDirectory];

//将myTxtFile的内容保存到文档目录中

**[myTxtFile writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];**

执行后,您会在文档文件夹中找到一个名为textfile.txt的文件,其中存储了内容。
干杯!

为什么要使用 NSStringEncodingConversionAllowLossy?而且,您没有提到 myTxtFile 的类。 - Raptor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接