MoviaBox/ShortPlay/Base/Extension/NSUserDefaults+JXAdd.m
2025-04-09 18:24:58 +08:00

46 lines
1.4 KiB
Objective-C

//
// NSUserDefaults+JXAdd.m
// 链之家
//
// Created by 曾觉新 on 2017/11/16.
// Copyright © 2017年 NetLoanHome. All rights reserved.
//
#import "NSUserDefaults+JXAdd.h"
@implementation NSUserDefaults (JXAdd)
+ (void)jx_setObject:(nullable id)obj forKey:(NSString *)key {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (!obj) {
[defaults removeObjectForKey:key];
return;
}
if ([obj respondsToSelector:@selector(encodeWithCoder:)] == NO) {
NSLog(@"Error save object to NSUserDefaults. Object must respond to encodeWithCoder: message");
return;
}
NSError *error;
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:obj requiringSecureCoding:true error:&error];
// NSLog(@"%@", error);
[defaults setObject:encodedObject forKey:key];
[defaults synchronize];
}
+ (nullable id)jx_objectForKey:(NSString *)key class:(Class)cls {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedObject = [defaults objectForKey:key];
if (encodedObject && [encodedObject.class isSubclassOfClass:NSData.class]) {
NSError *error;
id obj = [NSKeyedUnarchiver unarchivedObjectOfClass:cls fromData:encodedObject error:&error];
// NSLog(@"%@", error);
return obj;
} else {
return nil;
}
}
@end