ios - 如何在设置动态值后将数据保存到 ios 中的 plist 中?

标签 ios plist savechanges

<plist version="1.0">
    <dict>
            <key>InfoValue</key>
            <string>false</string>
            <key>AudioValue</key>
            <string>true</string>
            <key>VideoValue</key>
            <string>true</string>
            <key>DescValue</key>
            <string>true</string>
            <key>LinkValue</key>
            <string>true</string>
   </dict>
</plist>

这是 plist 文件,我想动态更改 InfoValue。在我的代码中,我使用 like

settingsPath=[[NSBundle mainBundle] pathForResource:@"SettingsValue" ofType:@"plist"];
settingsItem = [[NSMutableDictionary alloc] initWithContentsOfFile:settingsPath];

[settingsItem setObject:@"false" forKey:@"InfoValue"];

之后

[settingsItem writeToFile:settingsPath atomically:YES];

但它没有将数据保存到 plist 文件中。相反,我收到以下错误:

-[NSConcreteValue getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x8fad490
2013-02-27 10:26:44.479 vCamView[1577:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
 reason: '-[NSConcreteValue getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x8fad490'
*** First throw call stack:
(0x33dc012 0x2944e7e 0x34674bd 0x33cbbbc 0x33cb94e 0x2354915 0x23548b9 0x2354872 
   0x235468f 0x1e207 0x2958705 0x188f920 0x188f8b8 0x1950671 0x1950bcf 0x1a90747 
   0x2342e83 0x339b376 0x339ae06 0x3382a82 0x3381f44 0x3381e1b 0x376f7e3 0x376f668 
   0x188c65c 0x27e2 0x2715)

最佳答案

您不能修改包内的文件。它是只读的。尝试将 plist 保存在 DocumentDirectory

    NSString *directoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES)objectAtIndex:0];
    NSString *filePath = [directoryPath stringByAppendingPathComponent:@"SettingsValue.plist"];

   // Read from document directory
    settingsItem = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; 

    // update the dictionary
    [settingsItem setObject:@"false" forKey:@"InfoValue"];

   // write back to file  
    [settingsItem writeToFile:filePath atomically:YES];

关于ios - 如何在设置动态值后将数据保存到 ios 中的 plist 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104646/

相关文章:

ios - 使用单词列表进行多语言文字游戏的最佳方式

ios - 根据变量的值从 Plist 读取数据

ios - 如何检查 UITextField 输入有大写输入 - ios

ios - 从 NSUserDefaults 播放视频

objective-c - reloadRowsAtIndexPaths 停止加载 UITableViewCells?

javascript - 如何保存在线 html 中的更改

c# - 在 Entity Framework 中保存

ios - 我是否必须下载所有 iCloud 文件才能生成它们的缩略图?

C# WriteDocType 生成不正确的 PList 文档类型

database - Django:更新X数量模型的形式