사용자 디스크의 어느 곳에서나 파일 목록을 가지고있는 OSX 애플리케이션이 있습니다.코어 데이터에 지속되는 북마크
첫 번째 버전의 응용 프로그램은 이러한 파일의 경로를 코어 데이터 모델에 저장합니다.
그러나 파일을 이동하거나 이름을 변경하면 도구의 용도가 사라지고 응용 프로그램이 중단 될 수 있습니다.
그래서 북마크를 사용하기로 결정했습니다. 그것은 작동하는 것,하지만 내가 데이터를 복구하려고 할 때마다, 나는 파일의 이전 경로를 얻을. 왜 그런가요? 내가 뭘 놓치고 있니?
내 핵심 데이터 엔티티는 이진 데이터 필드를 사용하여 책갈피를 유지합니다.
북마크 자체는 다음과 같이 이루어집니다 : 나는 경우
while (object = [rowEnumerator nextObject]) {
NSError * error = noErr;
NSURL * bookmark = [NSURL URLByResolvingBookmarkData:[object fileBookmark]
options:NSURLBookmarkResolutionWithoutUI
relativeToURL:NULL
bookmarkDataIsStale:NO
error:&error];
if (error != noErr)
DDLogCError(@"%@", [error description]);
DDLogCInfo(@"File Path: %@", [bookmark fileReferenceURL]);
}
:
NSData * bookmark = [filePath bookmarkDataWithOptions:NSURLBookmarkCreationMinimalBookmark
includingResourceValuesForKeys:NULL
relativeToURL:NULL
error:NULL];
을하고 응용 프로그램을로드에, 나는 모든 테이블을 반복하고이 같은 책갈피를 복구하는 루프를 가지고 파일의 이름을 변경하면 경로는 null입니다. 이 NSData 객체와 경로가있는 문자열을 저장하는 데 차이가 없음을 알 수 있습니다. 그래서 나는 분명히 뭔가를 놓치고 있습니다.
편집 : 종종 다음과 같은 오류가 발생합니다 : CFURLSetTemporaryResourcePropertyForKey failed because it was passed this URL which has no scheme
.
감사합니다. 감사합니다.