Я чистил сеть, а Apple помогал в каком-то совете по этому поводу и быстро подходил. Интересно, сталкивается ли кто-нибудь с подобной ситуацией или может иметь некоторое представление о том, что происходит (или нет).
Я пытаюсь получить закладку app-scoped для файла, который будет вызван в последующем сеансе приложения. Я могу подтвердить, что сам путь правильно добавлен в песочницу после его выбора пользователем, потому что я могу открыть (и повторно открыть) его во время сеанса, когда он будет выбран.
Однако попытка получить закладку с защитой для доступа к ней позже не работает.
Вот что я делаю:
NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
NSError *error = nil;
NSData *bookmarkData = [url
bookmarkDataWithOptions:(1UL << 11) //NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&error];
[url release];
Я пробовал это как с url
, сгенерированным из строки path
, так и просто тестируя его, например, с помощью NSSavePanel url
. (Строка path
по старым причинам является той, которую я хотел бы использовать.)
Мне нужно использовать значение для bookmarkDataWithOptions
вместо константы, потому что из-за какого-то другого унаследованного кода я вынужден скомпилировать с 10.6 SDK, где NSURLBookmarkCreationWithSecurityScope
недоступно.
Я могу подтвердить, что путь указывает на указанный файл как "/Users/me/Documents/document.ext" и что NSURL
кажется правильно инициализирован (или хотя бы отражает тот же путь).
Приложение включает в себя право com.apple.security.files.bookmarks.app-scope
.
В любом случае, это не сработает. Этот код приводит к как a bookmarkData
0x0, так и error
0x0, а консоль показывает: ScopedBookmarkAgent: Failed to retrieve app-scope key, aborting.
Если я изменил relativeToURL
на url
вместо nil
и изменил право на com.apple.security.files.bookmarks.document-scope
, то он, кажется, работает правильно, то есть bookmarkData
по крайней мере получит ненулевое значение и ошибка не регистрируется. Но я уверен, что не то, что я хочу (т.е. Закладки с областью документа).
Есть ли что-то очевидное, что я делаю неправильно?