:
기본 객체는 속성 목록이 있어야합니다, 즉, (의 인스턴스의 조합 또는 모음)의 인스턴스 :있는 NSData,있는 NSString,의 NSNumber,있는 NSDate, NSArray를, 또는있는 NSDictionary.
다른 유형의 객체를 저장하려면 먼저 저장할 객체의 클래스에 NSCoding 프로토콜을 구현해야합니다. 어느 (사용자 정의 클래스 BMDifficultyLevel 내 자신의 코드 스 니펫)이 메소드를 구현하고 같이 디코딩 및 인코딩을 의미
을 :
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
_difficultyLevel = [decoder decodeObjectForKey:@"difficulty"];
_difficultyLevelType = [decoder decodeIntegerForKey:@"type"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:_difficultyLevel forKey:@"difficulty"];
[encoder encodeInteger:_difficultyLevelType forKey:@"type"];
}
다음 개체를 저장하기 전에이 같은 저장 한 후 보관하고 필요
NSUserDefaults *defaults = [[NSUserDefaults alloc] init];
_defaultsDataWithLevelObject = [NSKeyedArchiver archivedDataWithRootObject:_difficultyLevel];
[defaults setObject:_defaultsDataWithLevelObject forKey:BMDifficultyLevelDefaultsKey];
여기서 _defaultsDataWithLevelObject
은 NSData 유형의 객체이며, 결국 NSData 객체를 저장합니다. 이 답변에 대한
_defaultsDataWithLevelObject = [[NSUserDefaults standardUserDefaults] objectForKey:BMDifficultyLevelDefaultsKey];
_difficultyLevel = [NSKeyedUnarchiver unarchiveObjectWithData:_defaultsDataWithLevelObject];
확인 감사합니다 :
는이 같은 객체 뭔가를 보관 해제해야합니다 귀하의 기본값을 검색 할 수 있습니다. 내 값을 배열에 저장 한 다음 저장하는 것이 더 쉬울 수도 있다고 생각합니다. – 68cherries나는 모든 값 (NSDate, 2 NSNumbers, CLLocation)을 NSDictionary에 저장했다. NSDefaults에 저장하는 NSMutable 배열에 저장한다. 같은 오류가 발생합니다. : { – 68cherries