개체에 대한 속성 집합이있는 경우 개체를 NSUserDefaults의 사전에 저장할 수 있습니다. 각 속성에게 당신이 사용하는 각 속성에 대한 사용자 정의 setter 메소드를 생성 할 수 있습니다 설정되어있는 모든 시간을 절약하기 위해 :
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"yourKey"] == nil) {
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"yourObject" forKey:@"keyForYourObject"];
// Add stuff to the dictionary
[defaults setObject:dict forKey:@"yourKey"];
}else{
NSDictionary *dict = [defaults objectForKey:@"yourKey"];
// Add stuff to the dictionary
[defaults setObject:dict forKey:@"yourKey"];
}
이렇게하면 모든 속성과 UserDefaults에 저장 한 사전을 제공 할 것입니다. 키가의 standart 방법을 사용의 다음 목록을 얻을 수 있습니다 :
NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *keys = [dict allKeys];
그 이유를 제가했습니다 생각하게 처음에 필요하거나 도움이 될 것입니다 서브 클래스에 키의 목록을 제공함으로써 조금 혼란 스러워요 어쩌면 당신의 질문을 오해했을 수도 있습니다. 내 이해는이 클래스와 그 자손의 모든 인스턴스가 plist에서 쓰거나 읽는 것을 원한다는 것이다. 그러나 슈퍼 클래스가 모든 관찰 및 쓰기/읽기를 처리하고 서브 클래스가 고유 한 키 집합을 제공하여 수퍼 클래스 구현이 모든 관련 키를 관찰 할 수있는 것처럼 보입니다. 내가 놓친 게 있니? –