반응형
NSUserDefaults removeObjectForKey와 setObject : nil
다음 두 줄은 동일합니까?
1. [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"example key"]
2. [[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"example key"]
스위프트 3.0
아래 답변은 더 이상 테스트하지 않은 경우입니다. nil
결과로 설정하면 NSCFData가 저장됩니다. 아마도 NSNull 객체 참조 일 수도 있지만 긍정적이지 않습니다.
키 사용 값을 완전히 제거하려면 UserDefaults.standard.removeObject(forKey: "YourDefault")
다음 코드로 테스트했습니다.
UserDefaults.standard.set(["a", "b", "c"], forKey: "MyDefaults")
print("Test A: My saved defaults \(UserDefaults.standard.object(forKey: "MyDefaults"))")
UserDefaults.standard.set(nil, forKey: "MyDefaults")
print("Test B: My defaults set to nil \(UserDefaults.standard.object(forKey: "MyDefaults"))")
UserDefaults.standard.removeObject(forKey: "MyDefaults")
print("Test C: My defaults removed \(UserDefaults.standard.object(forKey: "MyDefaults"))")
예, 두 줄의 코드가 동일하며 모두 읽지 않습니다.
id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"example key"];
NSUserDefaults
키를 찾지 못하면 nil을 반환합니다. removeObjectForKey
nil로 설정 하는 대신 대신 사용하는 것이 좋습니다 .
키 값을 nil로 설정하여에서 키 항목을 제거했는지 테스트하는 방법은 다음과 같습니다 NSUserDefaults standardUserDefaults
.
NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] copy];
for(NSString *key in keys) {
NSLog(@"Key Name: %@", key);
}
[keys release];
또는 단순히 키 / 값 사전을 덤프 NSUserDefaults standardUserDefaults
NSLog(@"All contents of NSUserDefaults: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
참고 URL : https://stackoverflow.com/questions/6033174/nsuserdefaults-removeobjectforkey-vs-setobjectnil
반응형
'IT박스' 카테고리의 다른 글
Windows 서비스 및 예약 된 작업 (0) | 2020.08.02 |
---|---|
bash 탭 완성은 어떻게 작동합니까? (0) | 2020.08.02 |
안드로이드 용 소프트 키보드를 개발하는 방법? (0) | 2020.08.02 |
Node.js 웹 애플리케이션 예제 / 튜토리얼 (0) | 2020.08.02 |
Mac 용 C ++ IDE (0) | 2020.08.02 |