2017-06-20 6 views
0

ドキュメントディレクトリにビデオ/イメージを保存しています。イメージがドキュメントディレクトリに保存されると、ローカルデータベースにその参照を保存します。イメージのURLをローカルデータベースに保存できると思っています。iOSデバイス用のドキュメントディレクトリパス定数ですか?

私のアプリ全体で一定ですか?

答えて

0

いいえ、定数ではありません。あなたのアプリを再インストールするか更新するたびに、ドキュメントディレクトリが変更されます。なぜなら、デバイスosにインストールされたアプリケーションがランダムなIDを持つappディレクトリを作成し、それぞれがこのランダムをインストールするとOSによって変更されるからです。

したがって、ファイル名のみを保存し、ドキュメントディレクトリのパスを使用する際に追加するなど、独自のファイルを動的に作成する必要があります。

0

ファイル名またはサブディレクトリ/ファイル名(サブディレクトリがある場合)をデータベースに保存し、それをNSDocumentDirectoryにのみ添付することをお勧めします。

これは、ファイルがどこにあるあなたが常に知っていることを保証します...ファイルをアップデートしても、ドキュメントディレクトリに残っている必要がありますので、

NSDocumentDirectoryが、しかし、一貫性のaccrossアップデートです...

+2

にのみファイル名を保存してください、ディレクトリを文書からの相対パスが一致しています。絶対パスは一貫していません。 – Sulthan

0

にです一定ではない、あなたがアプリを起動するたびに違うはずだが、あなたのデータはこの新しいパスに移動されるのを観察した。ファイル名をデータベースに保存し、このファイル名をNSDocumentディレクトリに動的に追加することができます。

- (NSString *)documentsFilePath:(NSString *)fileName { 
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docsDir = [dirPaths firstObject]; 
    NSString *filePath = [docsDir stringByAppendingPathComponent:fileName]; 
    return filePath; 
} 


- (void)storeFile:(NSString *)fileName { 
    NSString *filePath = [self documentsFilePath:fileName]; 

    // create if needed 
    if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 

     // Write your data to file system here... 
    } 
} 

- (void)deleteFile:(NSString *)fileName { 
    NSString *filePath = [self documentsFilePath:fileName]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
     NSError *deleteErr = nil; 
     [[NSFileManager defaultManager] removeItemAtPath:filePath error:&deleteErr]; 
     if (deleteErr) { 
      NSLog(@"Can't delete %@: %@", filePath, deleteErr); 
     } 
    } 
} 

nilチェックを処理し、正確にDB

関連する問題