2013-10-03 2 views
3

) NSInvalidArgumentException [NSDictionary initWithObjects:forKeys:]: count of objects (0) differs from count of keys (1) 오류가 발생했습니다. 나는이 경우 오류 메시지에서 판단NSInvalidArgumentException [NSDictionary initWithObjects : forKeys :] : 객체 수 (0)가 키 수와 다릅니다 (

NSString *errorDesc = nil; 
SBJsonParser *parser = [[SBJsonParser alloc] init]; 
NSDictionary *jsonDictionary = [parser objectWithString:responseData]; 

paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
documentsPath = [paths objectAtIndex:0]; 
plistPath = [documentsPath stringByAppendingPathComponent:@"json_keys.plist"]; 

NSDictionary *plistDict = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects:jsonDictionary, nil] forKeys:[NSArray arrayWithObjects: @"json_keys", nil]]; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&errorDesc]; 
if (plistData) 
{ 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else 
{ 
    NSLog(@"Error in saveData: %@", errorDesc); 
    [errorDesc release]; 
} 
+1

'[parser objectWithString : responseData]'가 NSDictionary를 반환합니까? 그렇다면 캐스팅하십시오. –

답변

0

, [parser objectWithString:responseData] 반환 nil에 대해 다음 코드를 사용했다. 따라서 [NSArray arrayWithObjects:jsonDictionary, nil]은 빈 배열을 만듭니다. 그런 다음 NSDictionary을 만들고 빈 배열을 값으로 전달하고 배열을 @"json_keys" 문자열을 키로 전달하려고합니다. 따라서 오류 메시지는이 경우에 매우 정확합니다.

이 상황에 대한 수정은 달성하려는 대상에 따라 다릅니다.

당신은 단순히 당신의 방법에서 반환 할 수 있으며 경우에 아무것도하지, jsonDictionarynil입니다 :

NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithCapacity:1]; 
if (nil != jsonDictionary) { 
    [plistDict setObject:jsonDictionary forKey:@"json_keys"]; 
} 

의 :

// ... 
NSDictionary *jsonDictionary = [parser objectWithString:responseData]; 
if (nil == jsonDictionary) { 
    return; 
} 
paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
// ... 

또 다른 가능성은이 경우 비어 plistDict를 저장한다 물론 [parser objectWithString:responseData]nil을 반환하는 이유를 찾아서 수정할 수도 있습니다.

관련 문제