0

それが期待される動作であるかどうかはわかりません。

私は xcode 4.3.2 を持っていて、次のコードでデフォルトの Document ディレクトリを取得するアプリケーションを実行しています。

NSArray *dirPaths;
NSString *docsDirectory;
NSString *databasePath;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDirectory = [dirPaths objectAtIndex:0];
databasePath = [[NSString alloc] initWithString: [docsDirectory stringByAppendingPathComponent: DBNAME]];

const char *dbpath = [databasePath UTF8String];
    NSFileManager *filemgr = [NSFileManager defaultManager];
    if ([filemgr fileExistsAtPath:databasePath] == NO) {
        NSLog (@" GETDBPATHNAME: database file does not exist");
    }
    else {
        NSLog  (@" GETDBPATHNAME: Database File EXISTS");
    }

ユースケース: 1) xcode でパスが同じになるたびにアプリケーションを実行します。2) デバイスを再起動し、xcode でアプリケーションを再実行します。パスも同じです。3)しかし、アプリケーションを削除し、パスが異なる場合に再実行します。それはどのように可能ですか?

次のようなパスを取得します。

/var/mobile/Applications/xxxxxxx-xxx-xxxx-xxx-xxxxxxxxxxx/Documents/

値 xxxxxxx-xxx-xxxx-xxx-xxxxxxxxxxx は電話の UUID であると主張しました。毎回どう違うの?

あなたの助けに感謝します。

4

2 に答える 2

2

各アプリケーションには固有のドキュメント ディレクトリがあります。アプリを削除すると、ドキュメント ディレクトリも削除されます。次に、同じアプリケーションをインストールすると。iOS は、APP 用に別のディレクトリを生成します。この目的で以前のディレクトリ名を使用することはありません。

于 2012-11-16T06:49:39.360 に答える
0

アプリケーションを削除して再インストールするたびに、このパスが変更されます。

xxxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxは電話のUUIDではありません。そうでない場合、このパスはすべてのアプリケーションで同じになります。さらに、このパスは、アプリストアでアプリケーションを更新するときにも変更されます。

したがって、この問題を回避するための解決策は、/DocumentsDirectoryの後にパスを保存して使用することです。 stringByAppendingPathComponent:

ドキュメントディレクトリへのパスの後、フルパスを取得します。このようにして、リソースのパスに関して問題は発生しません。

于 2012-11-16T08:08:46.093 に答える