0

Cordova.plist ファイルに以下を追加しました。

Key: EnableEverything
Type: Boolean
Value: YES

次に、次のコードを使用して plist ファイルの読み取りと書き込みを行います。

NSString *adKey = @"EnableEverything";

NSString *pathToSettingsInBundle = [[NSBundle mainBundle] pathForResource:@"Cordova" ofType:@"plist"];
NSMutableDictionary *plist = [NSDictionary dictionaryWithContentsOfFile: pathToSettingsInBundle];

NSString *enableEverything = [[plist valueForKey:adKey] stringValue];
NSLog(@"EnableEverything: %@", enableEverything); // this returns 1, which is correct.

// Disable in plist.
[plist setValue:NO forKey:adKey];
[plist writeToFile:pathToSettingsInBundle atomically:YES];

NSLog(@"EnableEverything: %@", enableEverything); // never reaches this line

次のエラーが表示されます。

2012-09-07 14:20:12.168 slq[958:707] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInternalInconsistencyException> -[__NSCFDictionary removeObjectForKey:]: mutating method sent to immutable object

ファイルに書き込もうとしているときに問題があるようです。

4

1 に答える 1

1

アプリ バンドル内のファイルを変更しています。これはアップルによって禁止されています。これを確認してください:アプリバンドルのplistにNSDictionaryを書き込んでいます

ドキュメント フォルダなど、変更が許可されているフォルダに plist をコピーする必要があります。

于 2012-09-07T04:48:35.500 に答える