2012-08-14 2 views
-6

NSUserDefaults를 사용하여 다른 뷰 컨트롤러에 정수를 저장하므로이 이미지를 푸시 할 때 사용할 이미지를 알 수 있습니다. 어떤 이유로 휴대 전화가 image2 만 사용하는 동안 시뮬레이터는 image1 만 사용합니다. 내가 무엇을 할 수 있을지?NSUserDefaults가 Iphone 및 시뮬레이터에서 다르게 작동합니다.

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"key"] == 1){ 

    leftStill = [UIImage imageNamed:@"image1.png"]; 

} 

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"key"] == 2) { 

    leftStill = [UIImage imageNamed:@"image2.png"]; 

} 

[imageView setImage:leftStill]; 
+0

귀하의 코드는 시뮬레이터에서 키의 값이 1이지만 장치의 값이 2라고 알려줍니다. 이 키를 설정하는 코드에 버그가있을 수 있지만 게시하지 않았으므로 어떻게 알 수 있습니까? – idz

+0

NSLog를 사용하여 검사 할 때 정수가 올바르게 출력되지 않습니다. 해당 이미지 만 –

+0

의미가 없습니다. 뭔가 다른 일이 벌어지고 있습니다. 예를 들어 "image1.png"및 "image2.png"는 어떻게 든 그들이 생각하는 것과 다릅니다. 'leftStill'에 할당하기 바로 전에'NSLog'를 넣음으로써 이것을 검증 할 수 있습니다. – idz

답변

1

NSUserDefaults에서 값을 설정 한 후 - (BOOL)synchronize;으로 전화 했습니까?

+0

아니요. 정확히 무엇을해야합니까? –

+3

NSUerDefaults의 문서를 읽으십시오. 두 번째 성격이되도록 읽는 데 익숙해 져야합니다. 거기에서 답을 찾을 수 있습니다. – Jim

0

이 코드 블록 전에 nil/unallocated leftImage 및 imageView로 시작 했습니까?

정수 값을 테스트 중이므로 다음 코드가 더 잘 작동하지 않을 수 있으므로 현재 코드에서 수행중인 값의 두 가지 판독 값뿐만 아니라 잠재적으로 코드의 두 가지 판독 값을 피할 수 있습니다. 문제뿐만 아니라 중간 홀더의 사용 자체를 leftImage :

switch([[NSUserDefaults standardUserDefaults] integerForKey:@"key"]) { 
    case 1: 
    [imageView setImage:[UIImage imageNamed:@"image1.png"]; 
    break; 
    case 2: 
    [imageView setImage:[UIImage imageNamed:@"image2.png"]; 
    break; 
    default: 
    break; 
} 
0

당신이 NSUserDefaults의 값을 저장할 때 다음과 같은 일을 할 것입니다 :

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:1 forKey:@"key"]; 
[defaults synchronize]; 

가 동기화 자체에 주기적으로 발생합니까를 하지만 너는 구아가 없다. 고삐가 일어날 때. 따라서 NSUserDefaults에서 키의 값을 설정할 때마다 일반적으로 동기화됩니다.

prepareForSegue 사용과 같이 수행하려는 작업에 더 적합한 것을 고려할 수도 있습니다.

관련 문제