0

情報の辞書を plist に書き込むことができました。次のようにして、アプリの実行中にこれを確認できます。

less /Users/xxxxxx/Library/Application Support/iPhone Simulator/7.0.3-64/Applications/xxxxxxxx/appname.app/myplist.plist

そして、予想どおり、すべてのデータが xml 形式で書き込まれていることがわかります。(ファイルは約1KB)

シミュレーターを閉じて再度開くと、このファイルはバイナリであり、100 バイト未満であると言われます

私はiOS / Objective-cに比較的慣れていませんが、plistsとデータの永続化方法について根本的に欠けているものがあるかどうかはわかりません.

4

1 に答える 1

2

writeToFile:atomically: メソッドを使用して、NSDictionary のデータをファイルに書き込みますね。以下のように:

static NSString *filename = @"DictFile.plist";
- (NSDictionary *)openDict
{
    NSString *filePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:filename];

    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];

    return dict;
}

- (void)saveDict:(NSDictionary *)dict
{
    NSString *filePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:filename];

    if (![dict writeToFile:filePath atomically:YES])
    {
        [[NSException exceptionWithName:@"IOException"
                             reason:[NSString stringWithFormat:@"filename.plist cannot be saved to %@", filePath]
                           userInfo:nil] raise];
    }

    NSLog(@"File on path: %@", filePath);
}

- (NSString *)applicationDocumentsDirectory {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

確認方法:

- (NSDictionary *)createDict
{
    NSDictionary *dict = [self openDict];

    if (dict)
    {
        id key = [[dict allKeys] firstObject];
        if (key)
        {
            NSLog(@"Found dictionary: %@ - %@", key, [dict objectForKey:key]);
        }
    }
    else
    {
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"Key", @"Value", nil];

        [self saveDict:dict];
    }

    return dict;
}
于 2013-11-03T06:30:05.163 に答える