GVUserDefaults 1.0.2

GVUserDefaults 1.0.2

测试测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2016年1月

Kevin Renskerseightytwo维护。



  • By
  • Kevin Renskers

GVUserDefaults - 通过属性访问 NSUserDefaults

厌倦了在 NSUserDefaults 中编写所有获取和设置默认值的代码?想要通过使用属性来获得代码补全和编译检查吗?

使用

GVUserDefaults 上创建一个分类,在一个 .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

现在,您无需使用 [[NSUserDefaults standardUserDefaults] objectForKey:@"userName"],而是可以直接使用 [GVUserDefaults standardUserDefaults].userName

您甚至可以通过设置属性来保存默认值

[GVUserDefaults standardUserDefaults].userName = @"myusername";

键前缀

NSUserDefaults 中的键与您的属性同名。如果您想要给它们添加前缀或更改它们,请在其分类中添加一个 transformKey: 方法。例如,将 "userName" 转换为 "NSUserDefaultUserName"

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

注册默认值

注册默认值可以像平常一样完成,直接在 NSUserDefaults 上进行(如果有的话,使用相同的 prefix)!

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

[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];

然而,创建一个在分类上的 setupDefaults 方法会更容易,它会自动处理转换后的键

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

NSUserDefaults initWithSuitName 支持

只需在你的分类中创建一个名为 suitName 的方法并返回你希望使用的 suitName 即可

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

性能

性能几乎与直接使用 NSUserDefaults 相同。我们讨论的是 0.05 毫秒或更小的差异。

安装

通过 CocoaPodspod 'GVUserDefaults')安装,或将 GVUserDefaults 子文件夹中的代码拖动到您的项目中。

问题和疑问

有错误吗?请在 GitHub 上创建一个问题

贡献

GVUserDefaults 是一个开源项目,非常欢迎您的贡献。

  1. 检查开源问题新建问题,开始关于特性创意或错误的讨论。
  2. 在 Github 上的仓库进行分支,并在 develop 分支(或从其分支)上进行修改。请保留项目中使用的代码风格。
  3. 编写测试,确保一切通过。
  4. 发送拉取请求。

许可证

GVUserDefaults 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。

感谢

感谢 ADVUserDefaults 提供原始类型访问器的实现方法。