2012-08-14 5 views
0

NSUserDefaults가있는 정수에 이상한 문제가 있습니다. 개발중인 앱에서 일부 사진을 삭제할 수 있습니다. 사용자가 삭제할 때 NSUserDefaults의 정수가 줄어 듭니다 (StorageUsed라는 이름). 사용자가 사진을 삭제하면이 내 코드입니다 :NSUserDefaults의 정수가 감소하지 않습니다.

int size = [[json objectForKey:@"size"] intValue]; 
NSLog(@"photo size: %i",size); 
int storageUsed = [[NSUserDefaults standardUserDefaults] integerForKey:@"StorageUsed"]; 
storageUsed = storageUsed - size; 
NSLog(@"storage used: %i",storageUsed); 
[[NSUserDefaults standardUserDefaults] setInteger:storageUsed forKey:@"StorageUsed"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

을 그리고 이것은 출력 : 당신이 볼 수 있듯이 크기가 0이 아닌 상태에서, 사용되는 스토리지가 감소되지

2012-08-14 12:00:18.285 My Albums[32875:707] photo size: 116769 
2012-08-14 12:00:18.293 My Albums[32875:707] storage used: 952516 
2012-08-14 12:00:18.514 My Albums[32875:707] photo size: 117333 
2012-08-14 12:00:18.516 My Albums[32875:707] storage used: 952516 
2012-08-14 12:00:18.729 My Albums[32875:707] photo size: 120303 
2012-08-14 12:00:18.731 My Albums[32875:707] storage used: 952516 
2012-08-14 12:00:18.991 My Albums[32875:707] photo size: 137845 
2012-08-14 12:00:18.993 My Albums[32875:707] storage used: 952516 
... 

.

왜 이런 일이 발생하는지 설명해주세요.

+0

을 따를 때의 차이는
정의된다? – mathk

+0

그 명령을 사용하는 방법을 알려주시겠습니까? 그것은 벨을 울리지 않는다;) – Devos50

+1

'man defaults'가 도움이 될 것이다. – mathk

답변

0

% i 대신 % d 시도해 보셨습니까?

또한 integerForKey : int가 아닌 NSInteger를 반환합니다. 당신은`defaults` 명령을 사용하여 값을 점검

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger; 
#else 
typedef int NSInteger; 
#endif 
+0

% d을 (를) 사용하고 int를 NSInteger로 변경하려고했지만 두 가지 해결책이 모두 작동하지 않았습니다. 당신의 입력을 주셔서 감사합니다;) – Devos50

+0

NSInteger - NSInteger가 작동하지 않으면 어떻게 원래의 @StorageUsed "가 인코딩되어 있는지 확인합니다. setInteger : forKey : 그리고 첫 번째 매개 변수로 NSInteger를 전달 했습니까? –

관련 문제