2

Settings.plist があり、このファイルのいくつかの値を編集したいと考えています。

編集/書き込みする私の機能は次のとおりです。

- (void) setParamWithName: (NSString*) Name withValue: (NSString*) Value {

// get paths from root direcory
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Settings.plist"];

// check to see if Data.plist exists in documents
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
{
    // if not in documents, get property list from main bundle
    plistPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
}

// read property list into memory as an NSData object
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSString *errorDesc = nil;
NSPropertyListFormat format;
// convert static property list into dictionary object
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
if (!temp)
{
    NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
}

// checking if element exists, if yes overwriting

// if element not exists adding new element


[temp writeToFile:plistPath atomically:YES];

}

この関数は、Settings.plist を (同じ値で) 読み書きします。

新しい要素を追加したり、既存の要素を編集したりする方法がわかりません (objective-c に関する私の知識は十分ではありません)。誰でもこの問題で私を助けることができますか?

4

1 に答える 1

1

思ったより簡単だと思います。

ファイルのパスを取得したら、それを NSDictionary に読み込みます。mutableCopy と NSMutableDictionary を使用して、その辞書の変更可能なコピーを作成します。変更可能な辞書を好きなように編集します (s.th. の追加、s.th. の削除、s.th. の編集など)。

完了したら、temp で行ったように古いパスに書き戻すことができます。

あなたの主な問題は、その辞書の変更可能なバージョンを使用していないことです。それはあなたの人生をずっと楽にするでしょう。

于 2013-09-03T17:00:25.150 に答える