2014-12-08 2 views
-1

JSON을 사용하여 웹 서비스에서받은 데이터를 저장하는 Plist 파일을 만드는 데 문제가 있습니다. Plist 파일을 만들 수 없습니다. 경로가 비어 있고 데이터가 아무 곳에도 저장되지 않습니다. 이 문제는 파생 된 데이터를 정리할 때 발생했습니다. 이에 대한 해결책을 제안하십시오. Plist 파일을 만들 수 없습니다. iOS + NSDictionary + JSON

NSArray *eventsDictionary = [dataDictionary objectForKey:@"eventList"]; 
NSDictionary *plistDict = [NSDictionary dictionaryWithObject:eventsDictionary 
                   forKey:@"Events"]; 

if ([eventsDictionary count]==0) { 
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
    path = [path stringByAppendingPathComponent:DATA_DICTIONARY_KEY_USER_DEFAULTS]; 

    [plistDict writeToFile:path atomically:YES]; 
} 
else { 
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; 
    path = [path stringByAppendingPathComponent:DATA_DICTIONARY_KEY_USER_DEFAULTS]; 
    [plistDict writeToFile:path atomically:YES]; 
} 

가 대단히 감사합니다 :

JSON 데이터 : 내가 PLIST에 저장하는 방법

eventID = 2356; 
eventName = "Testing Event"; 

이다. 당신이

+0

정확한 오류를 게시하십시오. – rebello95

+1

1) 배열 변수의 이름이'eventsArray' 대신'eventsDictionary'입니까? 2) 배열이 비어있는 경우 왜 파일을 저장합니까? – rmaddy

+0

@ rebello95, 오류가 없습니다. Plist 파일을 만들 수 없습니다. 이유를 이해할 수 없습니다. 문서 폴더조차도 plist 파일이 없습니다. – Nurieka

답변

0

당신의 언급에 대한 자사의 도움이 있다면 나를 위해이 방법

-(void)saveToPlistName:(NSString *)plistName fromArray:(NSMutableArray*)array 
{ 
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentFolder = [path objectAtIndex:0]; 
    NSString *filePath = [documentFolder stringByAppendingFormat:[NSString stringWithFormat:@"/%@.plist",plistName]]; 
    [array writeToFile:filePath atomically:YES]; 
    NSLog(@"SAVE SUCCESS TO DIRECTORY%@",filePath); 

} 

투표를

NSMutableArray * mutArr = [NSMutableArray alloc]init]; 
[mutArr addObject:plistDict]; 
[self saveToPlistName:@"yourplist" fromArray:mutArr]; 

및 사용 배열에 DICT 추가 : 여기

+0

맞습니다. 그러나 이전에 null 값으로 저장 한 것처럼 매우 이상합니다. 어쨌든, 고맙습니다. – Nurieka

0

는 가장 간단한 방법입니다 JSON으로 웹 서비스에서 데이터를 가져 와서 사전으로 변환 한 주석.

문제는 거의 JSON 데이터에 null 값이 포함되어있어 사전에 NSNull의 인스턴스가 포함되어 있다는 것을 의미합니다. 속성 목록 유형 중 하나가 아니기 때문에 NSNull을 이와 같은 파일에 쓸 수 없습니다. 이 파일을 작성하는 것은 NSDictionary, NSArray, NSString, NSData, NSNumberNSDate의 인스턴스에서만 작동합니다. 또한 모든 사전 키는 문자열이어야합니다.

NSNull (또는 속성 목록이 아닌 클래스의 인스턴스) 인 경우 다음과 같은 파일 쓰기가 실패합니다.

데이터를 검토하고 모든 NSNull 인스턴스를 제거하거나 다른 방법으로 파일을 작성해야합니다.

+0

여전히 Plist 파일이 없습니다. – Nurieka