URLからテキストファイルをコピーし、アプリのドキュメントフォルダーに配置/上書きしてから、データ変数に読み戻す必要があります。私は次のコードを持っています:
NSData *data;
//get docsDir
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDir=[paths objectAtIndex:0];
//get path to text.txt
NSString *filePath=[docsDir stringByAppendingPathComponent:@"text.txt"];
//copy file
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
if([fileManager fileExistsAtPath:filePath]==YES){
[fileManager removeItemAtPath:filePath error:&error];
}
NSString *urlText = @"http://www.abc.com/text.txt";
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSFileManager *fileManager=[NSFileManager defaultManager];
[fileManager copyItemAtPath:urlText toPath:filePath error:NULL];
}
//Load from file
NSString *myString=[[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
//convert string to data
data=[myString dataUsingEncoding:NSUTF8StringEncoding];
ビルドと準拠は良好ですが、ドキュメントフォルダーにtext.txtファイルを作成してから、データ変数に何かを渡すことができません。私はIOSとXcodeの両方の初心者です、どんな手がかりも高く評価されます。ありがとう!
NSFileManagerは、ローカルパスのみを処理できます。URLを指定しても、何の役にも立ちません。
copyItemAtPath:toPath:error:
エラーパラメータを取ります。次のように使用します。
NSError *error;
if (![fileManager copyItemAtPath:urlText toPath:filePath error:&error]) {
NSLog(@"Error %@", error);
}
次に、次のエラーが発生します。
Error Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be
completed. (Cocoa error 260.)" UserInfo=0x9a83c00 {NSFilePath=http://www.abc.com/text.txt,
NSUnderlyingError=0x9a83b80 "The operation couldn’t be completed.
No such file or directory"}
http://www.abc.com/text.txt
有効なパスではないため、でファイルを読み取ることができません。
Sunny Shahが説明なしで述べたように、最初にURLでオブジェクトをフェッチする必要があります。
NSString *urlText = @"http://www.abc.com/text.txt";
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSURL *url = [NSURL URLWithString:urlText];
NSError *error;
NSData *data = [[NSData alloc] initWithContentsOfURL:url options:0 error:&error];
if (!data) { // check if download has failed
NSLog(@"Error fetching file %@", error);
}
else {
// successful download
if (![data writeToFile:filePath options:NSDataWritingAtomic error:&error]) { // check if writing failed
NSLog(@"Error writing file %@", error);
}
else {
NSLog(@"File saved.");
}
}
}
常にエラーをチェックしてください!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加