![](/img/trans.png)
[英]With a plist containing an array of arrays of dictionaries, how do you add and write out new dictionary elements
[英]How to write a new dictionary object to plist containing an array of dictionaries
我是Objective-C編程的新手,我試圖將一個新的字典對象寫入包含一個字典數組的plist,目的是持久存儲數據。
我的plist結構是:
<plist>
<array>
<dict>
<key>toyName</key>
<string>N64</string>
<key>toyBrand</key>
<string>Nintendo</string>
</dict>
</array>
</plist>
我嘗試編寫新字典的函數:
-(void)saveData {
NSFileManager *fm = [NSFileManager new];
NSError *err = nil;
NSURL *docsurl = [fm URLForDirectory:NSDocumentDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:YES
error:&err];
NSURL *url = [docsurl URLByAppendingPathComponent:@"Toy.plist"];
NSMutableArray *plistData = [NSMutableArray arrayWithContentsOfURL:url];
NSMutableDictionary *newDict = [[NSMutableDictionary alloc]init];
NSDate * now = [NSDate date];
[newDict setValue:itemText.text forKey:@"toyName"];
[newDict setValue:brandText.text forKey:@"toyBrand"];
[plistData addObject:newDict];
}
調用saveData函數時,使用NSLog打印時plistData數組仍然相同,並且plist並未更改。 如何將新的字典對象寫入包含字典數組的plist?
在[plistData addObject:newDict]
[plistData writeToURL:url atomically:YES]
下有代碼添加[plistData writeToURL:url atomically:YES]
,但是必須確保plistData不為nil,也就是說,要通過url查找相應的文件。
例如:
-(void)saveData {
NSFileManager *fm = [NSFileManager new];
NSError *err = nil;
NSURL *docsurl = [fm URLForDirectory:NSDocumentDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:YES
error:&err];
NSURL *url = [docsurl URLByAppendingPathComponent:@"Toy.plist"];
NSMutableArray *plistData = [NSMutableArray arrayWithContentsOfURL:url];
NSMutableDictionary *newDict = [[NSMutableDictionary alloc]init];
NSDate * now = [NSDate date];
[newDict setValue:itemText.text forKey:@"toyName"];
[newDict setValue:brandText.text forKey:@"toyBrand"];
[plistData addObject:newDict];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.