我有一個OSX應用程序應該有用戶磁盤中任何位置的文件列表。核心數據中的持久書籤
應用程序的第一個版本將這些文件的路徑保存在覈心數據模型中。
但是,如果文件被移動或重命名,該工具會失去其用途,應用程序可能會崩潰。
所以我決定使用書籤。它似乎在工作,但每次我嘗試恢復數據時,都會得到文件的舊路徑。這是爲什麼?我錯過了什麼?
我的核心數據實體使用二進制數據字段來保存書籤。
書籤本身就像下面這樣:
NSData * bookmark = [filePath bookmarkDataWithOptions:NSURLBookmarkCreationMinimalBookmark
includingResourceValuesForKeys:NULL
relativeToURL:NULL
error:NULL];
而且在加載應用程序,我有一個循環遍歷所有的表,恢復這樣的書籤:
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對象和一個字符串與路徑之間沒有區別。所以我顯然缺少一些東西。
編輯: 我也經常得到這樣的錯誤:CFURLSetTemporaryResourcePropertyForKey failed because it was passed this URL which has no scheme
。
我感謝任何幫助,謝謝!