首先,InAppSettingsKit 正是我想要的。一旦我弄清楚了一些事情,它将为我节省大量时间。
我的问题是:如何通过继承 IASKAbstractSettingsStore 来创建自己的商店?IASK的主页说:
IASK 的默认行为是将设置存储在 [NSUserDefaults standardUserDefaults] 中。但是,可以通过在 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 属性以分配和初始化我的新类 IASKSettingsStoreMeals 而不是 IASKSettingsStoreUserDefaults - 我能看到更改属性的唯一方法:
- (id<IASKSettingsStore>)settingsStore {
if (!_settingsStore) {
_settingsStore = [[IASKSettingsStoreMeals alloc] init];
}
return _settingsStore;
}
当我构建和运行时,当我尝试第一个控件(切换开关)时收到以下消息,所有其他字段都没有保存:
attempt to insert nil value at objects[0] (key: toggleSwitch)
我究竟做错了什么?除了“重新调整”代码以使用 IASKSettingsStoreFile(或子类 IASKAbstractSettingsStore)所需的更改之外,我还看不到在哪里设置文件路径更改保存设置的位置 - 或者是在后面完成的场景。期待通过这个学习曲线并使用它。