은 다음 코드는 내가 확인하고 NSUserDefaults에 이름 2453 아무 키가없는 것을 발견충돌 가져 오는 NSUserDefaults
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
나를 위해 충돌된다. 처음에는이 응용 프로그램을 실행 중이므로 나중에이 키가 추가되지는 않습니다. 이 충돌을 무시하는 법.
은 다음 코드는 내가 확인하고 NSUserDefaults에 이름 2453 아무 키가없는 것을 발견충돌 가져 오는 NSUserDefaults
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
나를 위해 충돌된다. 처음에는이 응용 프로그램을 실행 중이므로 나중에이 키가 추가되지는 않습니다. 이 충돌을 무시하는 법.
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
// ^^ ^
"키"는 -dictionaryForKey:
must be an NSString입니다. int
일 수 없습니다. 따라서 입력 한 키는 숫자로만 구성 되더라도 @"..."
을 사용하여 문자열을 전달해야합니다. 열쇠가 없다는 사실은 사고와 무관합니다.
if ([[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"]) {
// this line will only be reached if there is something for @"2453"
}
이 줄
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
가 충돌하는 행을 경우이를 시도 할 수 있습니다 대신
NSDictionary *dict = nil;
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"2453"] != nil)
dict = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
if (dict) {
...
}
내 직감이 경우 dictionaryForKey
가 뒤에서 objectForKey
호출이다 그리고 맹목적으로 당신을 위해 nil
을 NSDictionary
에 던지려고했다. 나는 생각한다. 그러나 그 열쇠에 대한 어떤 종류의 물체가 있는지 먼저 확인함으로써 충돌을 피할 수 있습니다. 소용돌이 치고 다시보고하십시오! :-)
크래시 로그는 어떤 모양입니까? –