2012-03-24 3 views
-2

이것은 내가 가지고있는 코드입니다. NSDictionary는 이전에는 사용되어 왔지만 문제를 찾으려고 할 때 일시적으로 제거했습니다.writeToPath : 원자 적으로 : 이것이 실패한 이유를 모르겠 음

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Entries/"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    BOOL isDirectory = NO; 
    BOOL directoryExists = [fileManager fileExistsAtPath:path isDirectory:&isDirectory]; 
    if (!directoryExists) { 
     [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil]; 
    } 

    if ([self.pathName isEqualToString:@""] || self.pathName == nil) { 
    self.pathName = [NSString stringWithFormat:@"%@.JEntry", [JMedia generateUuidString]]; 
    } 

    NSString *entryPath = [path stringByAppendingPathComponent:self.pathName]; 

    NSDictionary *dictionary; 

    NSLog(@"entrypath: %@", entryPath); 

    BOOL success = [dictionary writeToFile:entryPath atomically:YES]; 

    NSLog(@"success: %i", success); 

NSLog :

entrypath: /var/mobile/Applications/1B838285-8326-427A-8AC5-0D5567C3CD81/Documents/Entries/70AFCF6D-540E-436E-9989-68793500E35B.JEntry 
success: 0 
+0

시뮬레이션 파일의 디렉토리가 파일이 있는지 확인 했습니까? – CodaFi

+0

'[JMedia generate UuidString]'메소드는 완전히 임의의 문자열을 반환하므로 이미 존재할 수 없습니다. – Andrew

+1

'dictionary'는 무효이므로, 결코 작동하지 않을 것입니다. – jrturton

답변

2

문제는 documentaion 말한대로 dictionary는 재산 목록 개체 수없는 항목을 포함 할 수 있습니다

이 방법은 재귀 적 유효성을 검사 모두 포함 된 개체가 파일을 쓰기 전에 NSData, NSDate, NSNumber, NSString, NSArray 또는 NSDictionary의 인스턴스 인 속성 목록 객체이며 은 결과 파일이 유효한 속성 목록이 아니기 때문에 객체는 속성 목록 객체이 아닙니다.

+0

나는 그것을 생각했다. 그래서 나는 NSDictionary에 어떤 객체도 포함시키지 않았다. 그래서 나는 그것이 문제가 아니라는 것을 압니다. – Andrew

+2

아니요. 현재 코드에서 'NSDictionary'는 어떤 객체도 포함하지 않은 사전이 아니며 'nil'입니다. 그래서 지금 당신은'성공 : 0'을 얻습니다. – sch

관련 문제