2012-06-19 2 views
0

NSDictionaries의 NSArray를 문서 폴더에 쓰려고합니다. 나는 사용하고있다NSDictionaries 배열을 문서에 쓰고 싶습니까?

BOOL fileWritten = [favoritesArray writeToFile:fullFileName atomically:NO]; 
    if (fileWritten == NO) { 
     NSLog(@"Writing favoritesFileFailed"); 
    } 

위의 내용은 계속 NO를 반환한다. 왜 이것이 글을 쓰지 않는지 아는가? 정말 이상한 점은 며칠 전에이 코드가 작동하고 있다는 것입니다. writeToFile이 복잡한 객체를 처리 할 수 ​​없다는 것을 읽었습니다. NSDictionary가 writeToFile 객체를 저장할 수 없습니까?

+0

귀하의 사전은 무엇을 만드나요? 사전에서 사용하는 키는 무엇입니까? 파일 경로가 맞습니까? – Vladimir

+0

NSDictionary 개체에는 어떤 개체가 들어 있습니까? Arrays와 Dictionaries를 보관하는 것이 완벽하다고 생각합니다.하지만 보관할 수없는 객체가 포함되어 있다면 문제가있는 곳입니다. – Cocoadelica

답변

0

NSDictionary 그 자체를 파일에 쓰는 것은 문제가되지 않지만 그것이 보관하는 객체가 될 수 있습니다. 간단한 프로퍼티리스트와 관련된 I/O 방법을 사용하여

, 당신은 클래스 NSArray, NSDictionary, NSData, NSString, NSNumber, NSDate의 오브젝트를 작성할 수 있고, 임의의 이들의 조합 (사전, 예를 들어, 배열).

또한 기존 파일을 덮어 쓰지 않으므로 확인해 보셨습니까?

0

예치 당신이 가지고있는 경우 사용자 정의 객체 좀 NSCoding 마법을 할 것입니다 그리고 당신은 그래서 당신은 그 배열이 NSCodingReference을 준수하고 그 일을해야 내에서 반드시 각 사용자 정의 클래스를 만들 필요가 [NSKeyedArchiver archivedDataWithRootObject:favoritesArray]

사용할 수 있습니다.

0

먼저 fullFileName이 실제로 문서 디렉토리를 가리키고 있는지 확인하십시오.

그런 다음 [NSArray: writeToFile:atomically:]은 plist 파일에 저장할 수있는 데이터 유형 (NSString, NSData, NSDictionary 및 NSArray) 만 쓸 수 있으며 재귀 적으로 유효성이 검증됩니다.

0

간단한 개체를 사용하여 간단한 배열을 저장해보십시오. 아마도 숫자 만 가지고 문제가 지속되는지 확인하십시오. 그렇지 않으면 배열의 객체가 아마도 다른 곳에 저장하는 것을 고려해야 할 것입니다.

NSUserDefaults에 저장 해 보셨습니까? 다른 모든 것이 실패하면 왜 시도하지 않겠습니까?

관련 문제