GVUserDefaults 用戶偏好設置第三方庫的中文使用翻譯

GVUserDefaults - NSUserDefaults access via properties

GVUserDefaults是一款第三方庫插件,可以直接用屬性的方式來獲取存儲的值

Usage 使用方法

Create a category on GVUserDefaults, add some properties in the .h file and make them @dynamic in the .m file.
創建一個基于GVUserDefaults的category,將你需要使用的屬性寫在.h文件中,然后在.m文件中寫上@dynamic與屬性名即可.

// .h
@interface GVUserDefaults (Properties)
@property (nonatomic, weak) NSString *userName;
@property (nonatomic, weak) NSNumber *userId;
@property (nonatomic) NSInteger integerValue;
@property (nonatomic) BOOL boolValue;
@property (nonatomic) float floatValue;
@end
// .m
@implementation GVUserDefaults (Properties)
@dynamic userName;
@dynamic userId;
@dynamic integerValue;
@dynamic boolValue;
@dynamic floatValue;
@end

Now, instead of using [[NSUserDefaults standardUserDefaults] objectForKey:@"userName"], you can simply use [GVUserDefaults standardUserDefaults].userName.
現在,可以不再使用[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"],而是這么使用:[GVUserDefaults standardUserDefaults].userName.
You can even save defaults by setting the property:
你甚至可以直接用以下的setter方法來設置屬性(你寫在分類中的)值:
[GVUserDefaults standardUserDefaults].userName = @"myusername";

Key prefix 鍵值前綴

The keys in NSUserDefaults are the same name as your properties. If you'd like to prefix or alter them, add a transformKey: method to your category. For example, to turn "userName" into "NSUserDefaultUserName":
NSUserDefaults中的鍵值是的名字與你分類中屬性名字是一樣的,如果你想要去加一個前綴或者標記他們,使用 transformKey:(這樣可以使第一個字母大寫并且加上NSUserDefault前綴)

- (NSString *)transformKey:(NSString *)key {
  key = [key stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[key substringToIndex:1] uppercaseString]];
  return [NSString stringWithFormat:@"NSUserDefault%@", key];
}

Registering defaults 初始化 defaults

Registering defaults can be done as usual, on NSUserDefaults directly (use the same prefix, if any!).
初始化defaults 一樣可以完成.你可以用以下方式來初始化.

NSDictionary *defaults = @{
    @"NSUserDefaultUserName": @"default",
    @"NSUserDefaultUserId": @1,
    @"NSUserDefaultBoolValue": @YES
};

[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];

However, it's a lot easier to create a setupDefaults method on the category, which takes care of the transformed keys automatically:
當然,直接在分類中創建一個 setupDefaults 方法,但是要小心自動轉換的鍵值名字

- (NSDictionary *)setupDefaults {
  return @{
    @"userName": @"default",
    @"userId": @1,
    @"boolValue": @YES
    };
}

NSUserDefaults initWithSuitName support (評論中說是plist的名字)

Simply create a methods called suitName in your category and return the suitName you wish to use:
你只需在你的category中創建一個方法叫suitName,然后根據你的意愿返回你想要的值:

- (NSString *)suitName {
   
   return @"com.example.mySuitName";
}

Performance

Performance is nearly identical to using NSUserDefaults directly. We're talking about a difference of 0.05 milliseconds or less.
性能的話完全不用擔心,幾乎跟NSUserDefaults使用一模一樣.(作者在里面使用了時間戳對性能測試,性能還是不錯的,跟系統自帶的差不多)

Install

Install via CocoaPods (pod 'GVUserDefaults') or drag the code in the GVUserDefaults subfolder to your project.
你可以通過 CocoaPods 來安裝,或者是將GVUserDefaults拖到你的項目當中.

Issues and questions

Have a bug? Please create an issue on GitHub!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容