使用属性访问本地设置和通过 iCloud 共享的设置。
将其添加到您的 Podfile 中
pod 'MYSSharedSettings'
MYSSharedSettings
类。.h
文件中定义属性。.m
文件中为每个属性添加 @dynamic
语句。[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
以将属性名称转换为用于存储值的字符串,存储在 NSUserDefaults
和 NSUbiquitousKeyValueStore
中。
如果您已启用 iCloud 同步,但不想同步某个属性,则用 local
前缀命名,MYSSharedSettings 仅将其存储在 NSUserDefault 中。(例如:localViewMode
)
调用 - (void)pushLocalToiCloud
用 NSUserDefaults
中的本地设置覆盖任何已存在于 iCloud 中的设置。