0

이 문제에 대한 몇 가지 질문을 보았습니다. 그러나 이러한 질문이 내 문제에 대한 대답이라고 생각하지 않습니다.NSUserDefaults standardUserDefaults는 nil을 반환합니다.

내 방법에는 ... 내 응용 프로그램을 처음 시작할 때 기본값을 설정하는 데 사용하는 if 문 내에 있습니다.

NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults]; 
[myDefaults setObject:@"1" forKey:kNSUAccountSelection]; 
[myDefaults synchronize]; 

다른 키를 사용하여 동일한 작업을 수행합니다.

가 그럼 난이 실행 ...

오류가 발생
NSString *account_name = [[accountArray objectAtIndex:[accountArray 
    indexOfObject:[[NSUserDefaults standardUserDefaults] 
    objectForKey:kNSUAccountSelection]]] objectForKey:@"Account_Name"]; 

. 그 전에 직접 ...

그래서 내가 시도 - '경계를 넘어 인덱스 2147483647 [0 0 ..] [NSMutableArray를 objectAtIndex : : :]'

인해 캐치되지 않는 예외 'NSRangeException'응용 프로그램 종료, 이유는 줄 ...

NSUserDefaults *myDefaults2 = [NSUserDefaults standardUserDefaults]; 
NSString *str = [myDefaults2 stringForKey:kNSUAccountSelection]; 

그리고 str은 nil을 반환합니다. 내가 가진 내 constants.h 파일에서

...

#define kNSUAccountSelection @"accountselection" 

예, accountArray는 내 데이터베이스에서 채워 값을 가지고 있습니다.

나는 왜 이것을 얻지 못하고 내가 이것을 해결해야하는지 이해하지 못한다. 내가 읽은 바로는 이것이 작동해야합니다.

답변

0

1 라이너를 약간 부러 뜨리는 것이 좋습니다.

NSString *account_name = [[accountArray objectAtIndex:[accountArray 
    indexOfObject:[[NSUserDefaults standardUserDefaults] 
    objectForKey:kNSUAccountSelection]]] objectForKey:@"Account_Name"]; 

는 특히
[accountArray 
     indexOfObject:[[NSUserDefaults standardUserDefaults] 
     objectForKey:kNSUAccountSelection]] 

는 오류의 원인이된다.

indexOfObject

귀하의 의견은 나를 혼란 NSNotFound

NSNotFound 2147483647 

편집을 반환합니다.accountArray의 내부에 있어야하는데 무엇

int num = [[accountArray objectAtIndex:index] intValue]; 

됩니다의 내가 참조 1-라이너 지금

NSString *account_name = [[accountArray objectAtIndex:index] objectForKey:@"Account_Name"]; 

귀하의 의견 참조

int num = [[accountArray objectAtIndex:[accountArray indexOfObject:[[NSUserDefaults standardUserDefaults] objectForKey:kNSUAccountSelection]]] intValue]; 

입니다

int index = [accountArray 
      indexOfObject:[[NSUserDefaults standardUserDefaults] 
      objectForKey:kNSUAccountSelection]]; 

를 부르 자 ? 사전, 문자열 또는 숫자? 어레이 내부에서 원하는 모든 객체를 혼합하고 일치시킬 수 있다는 것을 알고 있지만 무엇을 기대합니까?

[accountArray objectAtIndex:index] 

+0

int num = [[변수 값] 반환 19716712 – Jules

+0

내가 거기에 읽기 쉬울 것이기 때문에 나는 편집으로 응답했다. 이걸 바닥에 얻을 수 있도록 그냥 노력하고. –

+0

위의 편집 참조하십시오. – Jules

0

"if"문이 실행되고 있습니까? 오류가 배열에 응답하므로 어떤 일이 벌어지고 있는지 알려주시겠습니까? 확인이 반환해야 @ 'ACCOUNT_NAME "문 있도록하십시오 @ 당신의 objectForKey에서"1 "또한

NSString *str = [myDefaults2 objectForKey:kNSUAccountSelection]; 

, 하드 코드 : 이것에

NSString *str = [myDefaults2 stringForKey:kNSUAccountSelection]; 

:

+0

예 중단 점이 있습니다. – Jules

0

이 줄을 변경해보십시오 예상대로

+0

Ok str은 nil을 반환합니다. – Jules

+0

이것은 무엇을 제공합니까? NSUserDefaults * myDefaults = [NSUserDefaults standardUserDefaults]; [myDefaults setObject : @ "1"forKey : kNSUAccountSelection]; [myDefaults synchronize]; NSString * str = [myDefaults objectForKey : kNSUAccountSelection]; – Vinnie

+0

str = 1 ... hmmm – Jules

관련 문제