0

作業中のiPhoneアプリがあり、アプリ内に設定ページがあります。.plistを使用してユーザーが選択した設定を保存し、後で.plistからデータを読み取ります。これは、プロジェクトの作成時に付属する-Info.plistではなく、別のplistファイルです。コーディング後に設定をテストしたところ、機能しました。設定が読み取れ、使用した正しい設​​定でした。ただし、同じアプリセッションの設定に戻り、同じ設定を変更しました。新しい設定を読み取るかどうかを確認するためにアプリにアクセスしたところ、古い(最初の)設定のみが使用されていました。もう一度試してみましたが、同じ結果になりました。設定を書き込むことができるのは1回だけで、同じ設定を「書き換え」または「上書き」することはできません。私の人生に何が悪いのか理解できません。

4

1 に答える 1

2

AppBundle自体のファイルを上書きしたり書き込んだりすることはできません。ファイルに書き込みたい場合は、最初に次のようにアプリのライブラリまたはドキュメントディレクトリにコピーする必要があります。

NSString *docsDir = [NSSearchPathsForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask) objectAtIndex:0];
NSString *plistFile = @"myplist.plist";
NSString *plistInBundle = [[NSBundle mainBundle] pathForResource:plistFile ofType:nil];
NSString *plistInDocsDir = [docsDir stringByAppendingPathComponent:plistFile];
[[NSFileManager defaultManager] copyItemAtPath:plistInBundle toPath:plistInDocsDir error:NULL];
// now `plistInDocsDir` is (over)writeable

ただし、アプリの設定を保存するには、NSUserDefaultsクラスを使用することをお勧めします。

[[NSUserDefaults standardUserDefaults] setObject:@"Some string" forKey:@"MySettingKey"];

および/またはアプリの設定バンドルを作成します。

于 2012-08-19T19:37:18.270 に答える