まず、InAppSettingsKitはまさに私が探していたものです。いくつかのことを理解したら、それは私にたくさんの時間を節約するでしょう。
私の質問は、IASKAbstractSettingsStoreをサブクラス化して独自のストアを作成するにはどうすればよいですか?IASKの本拠地は次のように述べています。
IASKのデフォルトの動作は、設定を[NSUserDefaultsstandardUserDefaults]に保存することです。ただし、IASKAppSettingsViewControllerでsettingsStoreプロパティを設定することで、この動作を変更することができます。
と
独自のストアを作成する最も簡単な方法は、IASKAbstractSettingsStoreのサブクラスを作成することです。
私はコードをくまなく調べるのにかなりの時間を費やしました、そして私はそれの基本的な構造を理解していると思います。ただし、settingsStoreプロパティをどのように何に設定するかがわかりません。
IASKAppSettingsViewControllerで定義および実装されたsettingsStoreを確認できます。
id<IASKSettingsStore> _settingsStore;
と
- (id<IASKSettingsStore>)settingsStore {
if (!_settingsStore) {
_settingsStore = [[IASKSettingsStoreUserDefaults alloc] init];
}
return _settingsStore;
}
IASKAbstractSettingsStoreをサブクラス化してみました。
#import <Foundation/Foundation.h>
#import "IASKSettingsStore.h"
@interface IASKSettingsStoreMeals : IASKAbstractSettingsStore {
NSString * _filePath;
NSMutableDictionary * _dict;
}
- (id)initWithPath:(NSString*)path;
@end
次に、IASKAppSettingsViewControllerのsettingsStoreプロパティを変更して、IASKSettingsStoreUserDefaultsの代わりに新しいクラスIASKSettingsStoreMealsを割り当てて初期化します。これは、プロパティを変更するために確認できる唯一の方法です。
- (id<IASKSettingsStore>)settingsStore {
if (!_settingsStore) {
_settingsStore = [[IASKSettingsStoreMeals alloc] init];
}
return _settingsStore;
}
ビルドして実行すると、最初のコントロール(トグルスイッチ)を試したときに次のメッセージが表示されますが、他のすべてのフィールドは保存されません。
attempt to insert nil value at objects[0] (key: toggleSwitch)
私は何が間違っているのですか?IASKSettingsStoreFile(またはサブクラス化されたIASKAbstractSettingsStore)を使用するためにコードを「再調整」するために必要な変更に加えて、ファイルパスを設定する場所がわかりません。また、設定が保存される場所を変更します。シーン。この学習曲線を乗り越え、これを使用することを楽しみにしています。