MYSSharedSettings 0.0.2

MYSSharedSettings 0.0.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2016年11月

Adam Kirk 维护。



  • Adam Kirk

使用属性访问本地设置和通过 iCloud 共享的设置。

安装

将其添加到您的 Podfile 中

pod 'MYSSharedSettings'

用法

  1. 继承 MYSSharedSettings类。
  2. .h 文件中定义属性。
  3. .m 文件中为每个属性添加 @dynamic 语句。
  4. 在您的代码中某处设置:[YourSubclass sharedSettings].syncSettingsWithiCloud = YES; // (或 NO)

示例

// CVSharedSettings.h

@interface CVSharedSettings : MYSSharedSettings
@property (nonatomic, assign) BOOL remindersEnabled;
@end

// CVSharedSettings.m
@implementation CVSharedSettings
@dynamic remindersEnabled;
@end

然后您像平常一样读取和设置设置属性

#import "CVSharedSettings.h"

[YourSubclass sharedSettings].syncSettingsWithiCloud = YES;

[CVSharedSettings sharedSettings].remindersEnabled = YES;

if ([CVSharedSettings sharedSettings].remindersEnabled) {
    // ... whatever happens when reminders are enabled
}

现在在同一台设备上运行的其他设备上的相同属性将具有您设置的值。

提供默认值

您可以重写 defaults 方法为 NSUserDefaults 提供默认值。

- (NSDictionary *)defaults
{
    return @{
         @"remindersEnabled"                    : @YES,
         @"timezoneSupportEnabled"              : @NO,
         @"showDurationOnReadOnlyEvents"        : @NO,
         @"localRootTableViewMode"              : @(CVRootTableViewModeAgenda),
         @"hiddenEventCalendarIdentifiers"      : @[],
         @"customCalendarColors"                : @{},
         @"defaultEventAlarms"                  : @[@(MTDateConstantSecondsInMinute * 15)],
         @"defaultAllDayEventAlarms"            : @[@(MTDateConstantSecondsInHour * 6)],
         @"defaultEventReminder"                : @[@(MTDateConstantSecondsInMinute * 15)],
         @"defaultAllDayReminderAlarms"         : @[@(MTDateConstantSecondsInHour * 6)]
         };
}

通知

监听 MYSSharedSettingsChangedNotification 通知,当远程更改的设置到达时得到通知。

转换键

重写 - (NSString *)keyForPropertyName:(NSString *)propertyName 以将属性名称转换为用于存储值的字符串,存储在 NSUserDefaultsNSUbiquitousKeyValueStore 中。

从同步中排除属性

如果您已启用 iCloud 同步,但不想同步某个属性,则用 local 前缀命名,MYSSharedSettings 仅将其存储在 NSUserDefault 中。(例如:localViewMode

将本地设置推送到 iCloud

调用 - (void)pushLocalToiCloudNSUserDefaults 中的本地设置覆盖任何已存在于 iCloud 中的设置。