ios NSUserDefaults 사용 방법
[[NSUserDefaults standardUserDefaults] setObject:@"exampleObject" forKey:@"exampleKey"];//
[[NSUserDefaults standardUserDefaults] objectForKey:@"exampleKey"];//
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"exampleKey"];//
NSUserDefaults를 사용하여 NSArray, NSData, NSDictionary, NSString, NSNumber 등 기본 데이터 유형을 제외한 사용자 정의 유형을 저장합니다. 오류는 다음과 같습니다.
// TradeRecordModel Model Array NSUserDefaults
Attempt to set a non-property-list object (
"",
"",
""
) as an NSUserDefaults/CFPreferences value for key myWalletTradeRecordList
사용자 정의 유형의 대상을 저장하려면 NSUserDefaults로 저장할 때 이를 압축 처리하고 꺼낼 때 먼저 해제해야 한다.다음은 NSUserDefaults가 다음과 같은 코드로 사용자 정의 모델(TradeRecordModel)을 저장하는 경우입니다.
/**
* TradeRecordModel.h
*/
@interface TradeRecordModel : NSObject //
@property (nonatomic,strong) NSString * ID;
@property (nonatomic,strong) NSString * title;
@property (nonatomic,strong) NSString * change;
@property (nonatomic,strong) NSString * created_at;
HMSingletonH(TradeRecordModel)//
@end
/**
* TradeRecordModel.m
*/
@implementation TradeRecordModel
HMSingletonM(TradeRecordModel)//
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
if ([key isEqualToString:@"id"]) {
_ID = value;
}
}
#pragma mark NSCoding
// : NSCoding
- (id)initWithCoder:(NSCoder *)aDecoder{
if (self == [super init]) {
_ID = [aDecoder decodeObjectForKey:@"id"];
_title = [aDecoder decodeObjectForKey:@"title"];
_change = [aDecoder decodeObjectForKey:@"change"];
_created_at = [aDecoder decodeObjectForKey:@"created_at"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:_ID forKey:@"id"];
[aCoder encodeObject:_title forKey:@"title"];
[aCoder encodeObject:_change forKey:@"change"];
[aCoder encodeObject:_created_at forKey:@"created_at"];
}
@end
모델 클래스 처리는 NSUserDefaults 저장소를 호출할 때 다음 코드로 처리됩니다.
TradeRecordModel *model = [TradeRecordModel new];
for (NSDictionary *dict in response) {
[model setValuesForKeysWithDictionary:dict];// model
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:model];// model
NSLog(@" :%@",data)
[arr addObject:data];
}
[[NSUserDefaults standardUserDefaults] setObject:arr forKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
모델 설정, 참조 링크:http://www.jianshu.com/p/76d6d1c56d3b.나머지 문제는 자신의 실제 상황을 참고하십시오.NSUserDefaults 체크 아웃 데이터를 호출할 때 코드는 다음과 같습니다.
NSArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:key];
TradeRecordModel *model = [TradeRecordModel new];
for (NSData *data in arr) {
model = [NSKeyedUnarchiver unarchiveObjectWithData:data];// model
NSLog(@" :%@",model.ID)
[tradeRecordListArr addObject:model];
}
가변수 그룹tradeRecordListArr에 이전에 저장한 모델이 저장되어 있습니다.또한 다음과 같은 NSUserDefaults 매크로 정의 방법에 대해 설명합니다.
//NSUserDefault
#define SAVEDEFAULTS(value,key) [[NSUserDefaults standardUserDefaults] setObject:value forKey:key];\
[[NSUserDefaults standardUserDefaults] synchronize];
#define GETDEFAULTS(key) [[NSUserDefaults standardUserDefaults] objectForKey:key];
The end!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.