Probleme beim Erstellen eines sicherheitsrelevanten Lesezeichens

Ich konvertiere meine Lion-App zur Verwendung der App Sandbox. Ich versuche das zu nutzenLesezeichen mit Sicherheitsbereich Die in 10.7.3 eingeführte Funktion ermöglicht den dauerhaften Zugriff auf einen Ordner. Der Code, den ich unten habe, gibt ein Null-Lesezeichen zurück und erzeugt die folgende Protokollmeldung:XPC couldn't look up the Mach service for scoped bookmarks agent.

Ich habe dieUser Selected File Access Anspruch aufRead/Write Access, und auch mit und ohne Umgebung ausprobiert..AccessingSecurityScopedResource Anrufe.

Ich denke, ich mache alles richtig gemäß der Dokumentation, also würde ich jeden Hinweis begrüßen. Der Code hat daran gearbeitet, eine einfache URL abzurufen, bevor ich mit dem Sandboxen der App begonnen habe.

<code>NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setAllowsMultipleSelection:NO];

NSInteger result = [openPanel runModal];

if( result == NSFileHandlingPanelCancelButton ) {
    return;
}

NSArray *urls = [openPanel URLs];

if( urls != nil && [urls count] == 1 ) {
    NSURL *url = [urls objectAtIndex:0];

    NSData *bookmark = nil;
    NSError *error = nil;
    bookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
             includingResourceValuesForKeys:nil
                              relativeToURL:nil // Make it app-scoped
                                      error:&error];
    if (error) {
        NSLog(@"Error creating bookmark for URL (%@): %@", url, error);
        [NSApp presentError:error];
    }

    NSLog(@"bookmark: %@", bookmark);
}
</code>

Update (x3)

Jetzt, wo ich es zum Laufen gebracht habe, kann ich überprüfen, ob die Anrufe an-startAccessingSecurityScopedResource und-stopAccessingSecurityScopedResource sind im obigen Code nicht erforderlich, da die Powerbox den Zugriff auf die Ressource gewährt, nachdem der Benutzer sie im Fenster ausgewählt hatNSOpenPanel.

Wenn Sie ein Lesezeichen aus einer anderen URL mit Sicherheitsbereich erstellen, z. B. ein Lesezeichen mit Dokumentbereich aus einem Lesezeichen mit Anwendungsbereich, das in einer anderen Anwendungssitzung erstellt wurde, müssen Sie zuerst auf die Datei zugreifen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage