2015-11-03 2 views
0

J'applique l'application NSApplicationDelegate: openFiles afin d'obtenir un comportement personnalisé pour des documents spécifiques. Pour certains documents cependant, je veux le comportement par défaut (qui est juste en les ouvrant et en les affichant). Ainsi, après le tri des documents que j'appelle pour chaque document:NSDocumentController openDocumentWithContentsOfURL: affichage: completionHandler: échoue

[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:[NSURL URLWithString:camDoc] display:YES completionHandler:^(NSDocument *document, BOOL alreadyOpen, NSError *error){ 
    NSLog(@"%@",document); 
}]; 

Dans la console l'erreur suivante est enregistrée:

*** setObjectForKey: key cannot be nil 

Le gestionnaire d'achèvement est jamais appelé. Si je commente la méthode openFiles complète, alors les documents sont bien ouverts, il semble donc que la classe NSDocument est implémentée correctement.

J'ai essayé de désactiver temporairement Sandboxing, car la méthode déléguée reçoit des NSStrings et non des URL, donc je m'attendais à ce que cela puisse être le problème. Cela n'a pas aidé.

Qu'est-ce qui ne va pas ici?

Question supplémentaire: Comment puis-je obtenir des URL de sécurité ouvertes par l'application (à partir du Finder)?

Répondre

0

Il s'est avéré que le problème était dû à la façon dont le NSURL est créé. Cela aurait dû utiliser les méthodes fileURL bien sûr.

+0

Pouvez-vous expliquer ce que vous voulez dire? – stone

+0

J'ai utilisé 'URLWithString', alors que cela aurait dû être' fileURLWithPath'. –

+0

à quoi ressemble cette déclaration dans Swift? – johnrubythecat