0

私はここで奇妙な問題に直面しています。アプリケーションの/Library/MyAppData/userstatus.plistフォルダーの場所に保存されている「userstatus.plist」というファイルにユーザー情報を保存しています。

私のアプリでは、次のコマンドを使用してファイルが存在するかどうかを確認します。

- (void)checkFile {
    NSString *statusPath = [self statusPath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:statusPath]) {
        NSLog(@"Reading user status from file");
        _userStatus = [[NSMutableArray alloc] initWithContentsOfFile:statusPath];
    }
    else {
        NSLog(@"Creating new user status");
        _userStatus = [[NSMutableArray alloc] init];
    }
}

- (NSString*)statusPath {
    return [[self libraryPath] stringByAppendingPathComponent:@"MyAppData/userstatus.plist"];
}

- (NSString*)libraryPath {
    NSString* path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    return path;
}

デバッグビルドでアプリをテストするときはいつでも、最初のビルドで「新しいユーザーステータスの作成」メッセージが1回だけ表示されます。以降のビルドでは、「ファイルからユーザーステータスを読み取っています」というメッセージが表示されます。

ただし、リリースビルドに切り替えると、ビルドを実行するたびに「新しいユーザーステータスの作成」メッセージが表示され続け、保存したユーザーデータはすべて消去されます。

私はウィットエンドにいるので、どんな助けでも大歓迎です...ありがとう!:)

編集:エミュレータでリリースビルドを実行したので、ファインダーウィンドウを監視して、その場所(/ Library / MyAppData /)で何が起こっているかを確認できました。plistファイルが作成されていないことが判明しました。これは奇妙なことです。問題なく作成される他のファイルがあります。plistファイルのみが作成されません。うまくいけば、これは解決策を得るのに役立つはずですか?

4

1 に答える 1

0

ここで誰かの時間を無駄にしてすみません。解決策は、質問をしているときに私が考えたこととは何の関係もありませんでした。開発中、私NSAssertはファイルをその場所に書き込む行でを使用しました。NSAssertリリースビルドでsがスキップされることを忘れました。

みんなごめんなさい、私の悪い。ただし、誰かに役立つ可能性がある場合は(できる限り)、この質問は残しておきます。

于 2012-05-18T20:46:40.633 に答える