2012-06-14 6 views
1

오늘도 오류가 발생했습니다. 나는 NSArray이고 NSMutableDictionary입니다. 문제는 내 NSMutableDictionary이 배열이된다는 것입니다. 여기 코드는 다음과 같습니다NSMutableDictionary가 올바르게 초기화되지 않습니다.

헤더 :

NSArray *tableViewCellValues; 
NSMutableDictionary *inputValues; 

구현 : 그래서 일반적으로

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    tableViewCellValues = [NSArray arrayWithObjects:@"First", @"Second", @"Third", nil]; 
    inputValues = [NSMutableDictionary dictionary]; 
    //other code... 
} 

내가 객체로 "첫째", "두 번째"와 "셋째"와 빈 배열을 얻어야한다 NSMutableDictionary. 내가 바로 NSMutableDictionary를 초기화 한 후 로그를 인쇄 할 때 나는 다음과 같은 얻을 :

(lldb) po tableViewCellValues 
(NSArray *) $1 = 0x00000000 <nil> 
(lldb) po inputValues 
(NSMutableDictionary *) $2 = 0x06a80420 <__NSArrayI 0x6a80420>(
First, 
Second, 
Third 
) 

(lldb) po [tableViewCellValues class] 
error: Couldn't execute function; result was eExecutionDiscarded 
(lldb) po [inputValues class] 
(id) $4 = 0x01453b64 __NSArrayI 

내가 거기 좀 혼란 스러워요. 청소를 시도하고 다시 실행했지만 아무 일도 일어나지 않습니다.

중요한 경우 Mac OS X 10.7.3 및 Xcode 4.3을 사용하고 있습니다.

도움을 주시면 감사하겠습니다.

+0

당신이 ALLOC 및 초기화하여 사전을 초기화 시도? '[[NSMutableDictionary alloc] init]' – skram

+0

@skram 해봤지만 아무런 변화가 없다. – Novarg

+0

ARC를 사용하고 있습니까? 그렇지 않다면 배열과 사전을 모두 유지해야합니다. – iTukker

답변

2

당신은 정말 사전에 메모리를 할당 할, 그래서해야한다 : 당신이 당신의 사전

사용이 코드를 할당하지 않기 때문에

self.inputValues = [[NSMutableDictionary alloc] init];

+0

그래서 속성을 만들어야합니까? – Novarg

+0

글쎄, 할 수있어. 속성이 아니라면'self-> inputValues ​​= ... '로 변경하십시오. –

+0

방금 ​​만든 속성들이 작동했습니다. 감사합니다 – Novarg

-1

이것은

inputValues = [[NSMutableDictionary alloc] init]; 
+0

미안 해요, 내가 원하는, inputValues가 비어 있어야합니다 – Novarg

+0

귀하의 요구 사항에 따라 내 대답을 변경 .. – Rajneesh071

1

새로운 리터럴 구문이 더 우수합니다.

self.myMutDict = [@{} mutableCopy] 

하거나 이해 재산이없는 이상 버전 :

NSDictionary *emptyDict = @{}; 
NSMutableDictionary *myMutDict = [emptyDict mutableCopy]; 
+0

2015 현재 로이 답변은 최고입니다 – kellyfj

관련 문제