1

通常、ユーザーが最初にアプリを起動するときを除いて、データを plist に保存します (JailBroken 電話がハッキングされても気にしないデータのみ、ユーザーの設定など)。次のように plist を作成します。

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *pathFirstTime = [documentsDirectory stringByAppendingPathComponent:@"FirstTime.plist"];

NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: pathFirstTime])
{
    NSString *bundleFirstTime = [[NSBundle mainBundle] pathForResource:@"FirstTime" ofType:@"plist"];

    [fileManager copyItemAtPath:bundleFirstTime toPath:pathFirstTime error:&error];
}

そこで、xcode で空の plist ファイルを作成してバンドルに入れ、ユーザーがアプリを初めて起動したときに、それを documentsDirectory にコピーします...

とにかく、objective-c で初めて空の plist ファイルを作成する方法はありますか?実際に Xcode で作成してバンドルに含める必要はありませんが、ユーザーが最初に起動したときに自動的に作成されます。アプリ...

基本的に、このコードを回避するだけです:[fileManager copyItemAtPath:bundleFirstTime toPath:pathFirstTime error:&error];

4

3 に答える 3

4
[@{} writeToFile: pathFirstTime atomically: NO];
于 2013-05-01T17:31:11.963 に答える
2

NSArrayまたはNSDictionaryインスタンスを作成し、を使用しますwriteToFile:atomically:

于 2013-05-01T17:31:33.910 に答える
0

コード全体を削除してください。これでうまくいきます

    if(![[NSUserDefaults standardUserDefaults] objectForKey:@"FirstRun"]){
            NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
            NSString *pathFirstTime = [documentsDirectory stringByAppendingPathComponent:@"MyPlistFile.plist"];

            [@{} writeToFile: pathFirstTime atomically: YES];

            [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:NO] forKey:@"FirstRun"];
        }

新しいレコードを追加しますか?

        NSString *pathFirstTime = [documentsDirectory stringByAppendingPathComponent:@"MyPlistFile.plist"];
        NSMutableDictionary *mdic = [[NSMutableDictionary alloc] initWithDictionary:[NSDictionary dictionaryWithContentsOfFile:pathFirstTime]];

        [mdic setObject:[NSNumber numberWithInt:3] forKey:@"user-selected-color-scheme"];
        [mdic writeToFile: pathFirstTime atomically: YES];

後で plist ファイルを読みますか?

        NSString *pathFirstTime = [documentsDirectory stringByAppendingPathComponent:@"MyPlistFile.plist"];
        NSMutableDictionary *mdic = [[NSMutableDictionary alloc] initWithDictionary:[NSDictionary dictionaryWithContentsOfFile:pathFirstTime]];
        NSLog(@"%@", mdic);
于 2013-05-01T17:35:53.690 に答える