日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

APDataCenter

APDataCenter 為統一存儲的入口類,為一個單例,可在代碼任意地方調用。

[APDataCenter defaultDataCenter]

也可以使用宏。

#define APDefaultDataCenter [APDataCenter defaultDataCenter]

接口介紹

宏定義

#define APDefaultDataCenter [APDataCenter defaultDataCenter]
#define APCommonPreferences [APDefaultDataCenter commonPreferences]
#define APUserPreferences [APDefaultDataCenter userPreferences]
#define APCurrentVersionStorage [APDefaultDataCenter currentVersionStorage]

常量定義

以下幾個事件通知業務代碼通常無須關注,但是統一存儲會拋出這些通知。

/**
 *  前一個用戶的數據庫文件將要關閉的事件通知
 */
extern NSString* const kAPDataCenterWillLastUserResign;

/**
 *  用戶狀態已經發生切換的通知。有可能是 user 變為 nil 了,具體 userId 可以用 currentUserId 來獲取。
 *  這個通知附加的 object 是個字典,如果不為 nil,里面 @"switched" 這個鍵值返回 @YES 表示確實發生了用戶切換事件。
 */
extern NSString* const kAPDataCenterDidUserUpdated;

/**
 *  用戶并沒切換,APDataCenter 重新收到登入事件。會拋這個通知。
 */
extern NSString* const kAPDataCenterDidUserRenew;

接口與屬性

void APDataCenterLogSwitch(BOOL on);

打開或關閉統一存儲的控制臺 log,默認為打開。

@property (atomic, strong, readonly) NSString* currentUserId;

獲取當前登錄用戶的 userId。

(NSString*)preferencesRootPath;

獲取存儲 commonPreferences 和 userPreferences 數據庫文件夾的路徑。

(void)setCurrentUserId:(NSString*)currentUserId;

設置當前登錄的用戶 ID,業務代碼請不要調用,需要由登錄模塊調用。設置用戶 ID 后,userPreferences 會指向這個用戶的數據庫。

(void)reset;

完全重置整個統一存儲目錄,請謹慎使用。

(APSharedPreferences*)commonPreferences;

與用戶無關的全局存儲數據庫。

(APSharedPreferences*)userPreferences;

當前登錄用戶的存儲數據庫。不是登錄態時,取到的是 nil。

(APSharedPreferences*)preferencesForUser:(NSString*)userId;

返回指定用戶 ID 的存儲對象,業務層通常使用 userPreferences 方法即可。當有異步存儲需要時,防止竄數據,可以使用該方法取特定用戶的存儲數據庫。

(APPreferencesAccessor*)accessorForBusiness:(NSString*)business;

根據 business 名生成一個存取器,業務層需要持有這個對象。使用這個存取器后,訪問 KV 存儲就不需要再傳 business 了。

APPreferencesAccessor* accessor = [[APDataCenter defaultDataCenter] accessorForBusiness:@"aBiz"];
[[accessor commonPreferences] doubleForKey:@"aKey"];

// 等價于

[[[APDataCenter defaultDataCenter] commonPreferences] doubleForKey:@"aKey" business:@"aBiz"];

(APCustomStorage*)currentVersionStorage;

統一存儲會維護一個當前版本的數據庫,當版本發生升級時,這個數據庫會重置。

(id<APDAOProtocol>)daoWithPath:(NSString*)filePath userDependent:(BOOL)userDependent;

從一個配置文件生成 DAO 訪問對象。

參數說明

參數

說明

filePath

DAO 配置文件的文件路徑。在 main bundle 里的文件使用下面方式:NSString* filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"xml"];

userDependent

指定這個 DAO 對象操作哪個數據庫。如果 userDependent=NO,表示與用戶無關,那么 DAO 會在 commonPreferences 的數據庫文件中建表。如果 userDependent=YES,那么 DAO 對象會在 userPreferences 的數據庫文件中建表。當切換用戶后,后續的 DAO 操作會自動在更換后的用戶文件中進行,業務無須關心用戶切換。

返回值

DAO 對象。業務不用關心它的類名,只需要使用業務自己定義的 id<AProtocol> 強制轉換一下即可。返回的 DAO 對象,在需要時也可以使用 id<APDAOProtocol> 進行轉換,調用默認提供的方法。所以自定義的 AProtocol 不要含有 APDAOProtocol 里定義的方法。

(id<APDAOProtocol>)daoWithPath:(NSString*)filePath databasePath:(NSString*)databasePath;

創建一個維護自己獨立數據庫文件的 DAO 訪問對象,而不使用 APSharedPreferences。使用 daoWithPath:userDependent: 接口創建的 DAO 對象,操作的是 commonPreferencesuserPreferences。這個接口會創建一個 DAO 對象,并且操作的是 databasePath 指定的特定數據庫文件,若文件不存在則會創建此文件。可以創建多個 DAO 對象,指定相同的 databasePath。

參數說明

參數

說明

filePath

daoWithPath:userDependent: 接口。

databasePath

DAO 數據庫文件的位置,可以傳絕對路徑,也可傳 Documents/XXXX.dbLibrary/Movie/XXX.db 這樣的相對路徑。

返回值

DAO 對象。