UFO ET IT

NSData를 파일에 쓰는 가장 쉬운 방법

ufoet 2020. 11. 19. 22:21
반응형

NSData를 파일에 쓰는 가장 쉬운 방법


NSData *data;
data = [self fillInSomeStrangeBytes];

내 질문은 이제 data파일에 가장 쉬운 방법으로 이것을 작성할 수 있는 방법입니다.

(이미 NSURL이 있습니다 file://localhost/Users/Coding/Library/Application%20Support/App/file.strangebytes)


NSDatawriteToURL:atomically:원하는 작업을 정확히 수행 하는 메서드 가 있습니다. 에 봐 에 대한 문서NSData 를 사용하는 방법을 참조하십시오.


NSData파일에 쓰는 것은 주 스레드를 차단할 수있는 IO 작업입니다. 특히 데이터 개체가 큰 경우.

따라서 백그라운드 스레드에서이 작업을 수행하는 것이 좋습니다. 가장 쉬운 방법은 다음과 같이 GCD를 사용하는 것입니다.

// Use GCD's background queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    // Generate the file path
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"yourfilename.dat"];

     // Save it into file system
    [data writeToFile:dataPath atomically:YES];
});

writeToURL : atomically : 또는 writeToFile : atomically : URL 대신 파일 이름이있는 경우.


또한이 writeToFile:options:error:writeToURL:options:error:있는이 경우의 구원 오류 코드를보고 할 수 있습니다 NSData어떤 이유로 실패했습니다. 예를 들면 :

NSError *error;

NSURL *folder = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error];
if (!folder) {
    NSLog(@"%s: %@", __FUNCTION__, error);        // handle error however you would like
    return;
}

NSURL *fileURL = [folder URLByAppendingPathComponent:filename];
BOOL success = [data writeToURL:fileURL options:NSDataWritingAtomic error:&error];
if (!success) {
    NSLog(@"%s: %@", __FUNCTION__, error);        // handle error however you would like
    return;
}

참고 URL : https://stackoverflow.com/questions/679104/the-easiest-way-to-write-nsdata-to-a-file

반응형