在iPhone中检索文本文件时出现问题

时间:2011-03-13 20:26:39

标签: iphone objective-c

我使用以下代码将文本文件写入de Documents文件夹:

NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fileDocumentsDirectory = [filePaths objectAtIndex:0];    
NSString *fullPath = [fileDocumentsDirectory stringByAppendingPathComponent:self.fileName];
NSData *tmpData = [NSData dataWithBytes:self.content length:[self.content length]];
[tmpData writeToFile:appFile atomically:YES];

如果我直接使用NSData的内容创建一个字符串,它可以工作,所以数据似乎没问题。我用以下方法检索文件:

NSString *fileContents = [[NSString alloc] initWithContentsOfFile:fullPath usedEncoding:nil error:nil];

NSString *fileContents = [NSString stringWithContentsOfFile:fullPath usedEncoding:&encoding error:&error];

或者进入NSData并从那里到带有

的String
NSData *fileContentsData = [NSData dataWithContentsOfFile:fullPath];
NSString *fileContents = [[NSString alloc] initWithData:fileContentsData encoding:NSUTF8StringEncoding];

在这两种情况下,fileContents都为null。我疯了,我只是看不出为什么fileContents为null。我用NSLog检查了每个值,“self.content”包含值,NSData包含相同的值...但是尝试检索它们返回null OR,尝试使用NSUTF16StringEncoding,我检索...中文字符,但不是null。 / p>

它必须是与编码相关的东西,但是tmpData使用UTF-8并从中初始化一个String,就像一个魅力一样,问题似乎是当我读/写文件时。

我现在晕了,你能帮我一把吗?

提前致谢:)

编辑:我刚尝试使用以下代码从网址打开.txt文件:

NSURL *url = [[NSURL alloc] initWithString:tmpField.text];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url];

NSHTTPURLResponse *response = nil;
NSError *error = nil;

NSData *responseData = [NSURLConnection sendSynchronousRequest:req
                                                     returningResponse:&response
                                                                 error:&error];
if(response == nil) {
    // TO BE CONTINUED           
}
NSInteger statusCode = [response statusCode];
NSString *contentType = [[response allHeaderFields] objectForKey:@"Content-Type"];

if(statusCode >= 200 && statusCode < 300 && [contentType hasPrefix:@"text"]) {
    NSString *payloadAsString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

我已经检查过,程序到达最后一行,但payloadAsString是......那是对的,也是零。我做错了什么?

1 个答案:

答案 0 :(得分:2)

self.content的类型是什么?如果是NSString,则使用-[NSString dataUsingEncoding:NSUTF8StringEncoding]方法代替-[NSData initWithBytes:]获取NSData对象。