1

非常に単純なデータを .plist ファイルに書き込もうとしています。あらゆる種類のコード サンプルを確認しましたが、うまく動作しません。

まず、ファイル自体を作成してパスを返すメソッドがあります。

-(NSString *)getFilePath{
    NSArray *thePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    return [[thePath objectAtIndex:0] stringByAppendingPathComponent:@"events.plist"];
}

次に、これがボタンに接続したアクションです。現時点では、ダミー データの行を挿入するだけです。または少なくとも、それが私がやろうとしていることです。

- (IBAction)saveData:(id)sender {
    NSArray *data = [[NSArray alloc] initWithObjects:@"E3 Expo", @"05-06-2012", nil];
   [data writeToFile:[self getFilePath] atomically:YES];
}

しかし、うまくいきません。Xcode のオーガナイザーでユーザー ドキュメントのディレクトリを確認しましたが、"Documents" フォルダーに何も作成されていません。

どんな助けでも大歓迎です。:)

4

1 に答える 1

0

辞書をルート plist オブジェクトとして設定する必要があります。

[編集: ファイルが表示されない場合は、で作成してNSFileManagerください]

NSError *error;
NSString *plistPath = [self getFilePath];

NSArray *data = [[NSArray alloc] initWithObjects:@"E3 Expo", @"05-06-2012", nil];
NSDictionary *plistDict = [NSDictionary dictionaryWithObject: data forKey: @"array"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];
if(plistData) {
    //not necessary
    if ([[NSFileManager defaultManager] fileExistsAtPath: plistPath]) {
        [[NSFileManager defaultManager] removeItemAtPath: plistPath error: &error];
    }
    [[NSFileManager defaultManager] createFileAtPath: plistPath contents:plistData attributes: nil];
    //necessary
    [plistData writeToFile: plistPath atomically:YES];
}
else {
    NSLog(error);
    [error release];
}
//also release data, since you retained it (sorry, memory management OCD)
[data release];

Apple のドキュメントに基づく - [Write Out the Property List] までスクロールします

于 2012-05-23T02:26:10.850 に答える