2

我正在使用以下代碼來生成安全範圍的書籤。這在10.8和10.9上運行正常,但在10.10停止工作。我不知道要檢查什麼?安全範圍書籤在優勝美地停止工作10.10

NSOpenPanel *panel = [NSOpenPanel openPanel]; 
[panel setAllowsMultipleSelection:NO]; 
[panel setCanChooseDirectories:YES]; 
[panel setCanChooseFiles:NO]; 
[panel setResolvesAliases:YES]; 
[panel setCanCreateDirectories:YES]; 
[panel setTitle:@"Choose a directory as your input folder"]; 
[panel setPrompt:@"Choose"]; 

NSInteger result = [panel runModal]; 

if (result == NSFileHandlingPanelOKButton){ 
    NSURL *urlPath = [[panel URLs] objectAtIndex:0]; 
    NSError *error = nil; 
    NSData *bookmark = nil; 
    bookmark = [urlPath bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope 
         includingResourceValuesForKeys:nil 
              relativeToURL:nil 
                error:&error]; 

    if (error) { 
     [NSApp presentError:error]; 
    } 

    BOOL bookmarkDataIsStale; 
    NSURL *url = [NSURL URLByResolvingBookmarkData:  bookmark 
              options:NSURLBookmarkResolutionWithSecurityScope 
            relativeToURL:nil 
           bookmarkDataIsStale:&bookmarkDataIsStale                error:nil]; 
} 

我已經啓用了應用程序沙箱的權利,並且增加了com.apple.security.files.user-selected.read寫入和com.apple.security.files.bookmarks.app範圍的權利。

以上是生成的URL,但它不是安全範圍。所以當它被記錄時它是通常的文件路徑,而不是以前發生的?然後再堆積字符。

任何幫助或意見讚賞

+0

我已經看到你在我自己的應用程序中描述的行爲,但這些URL仍然具有安全範圍(他們可以授予對該文件的訪問權限)。您再也看不到查詢字符串中的安全令牌。我在Apple Dev論壇上發現了這個主題:https://devforums.apple.com/message/1059959 – Dov 2014-11-07 18:43:35

+0

這仍然沒有解決,但似乎與您鏈接到的問題相同。非常感謝。 – 2014-11-19 11:48:03

+0

我已經解決了這個問題。上述代碼用於使用[[NSUserDefaults standardUserDefaults] setURL:url forKey:@「basePath」]將安全範圍書籤存儲爲NSURL。這在10.8和10.9中運行正常,但不再在10.10中運行。如果我將書籤數據保存爲數據對象,然後根據需要檢索它並將其轉換爲NSURL,則所有工作都會正常工作。 – 2014-11-21 10:57:07

回答

2

我已經解決了這個問題。上述代碼用於使用[[NSUserDefaults standardUserDefaults] setURL:url forKey:@"basePath"]將安全範圍書籤存儲爲NSURL。這在10.8和10.9中運行正常,但不再在10.10中運行。如果我將書籤數據保存爲數據對象,然後根據需要檢索並轉換爲NSURL,那麼所有工作都會正常工作。

相關問題