2

Snow Leopard でうまく動作する次のコードがあります。一時ディレクトリに保存されているファイルを優先アプリケーションで開きます。

        CFURLRef prefAppUrl = nil;
        LSGetApplicationForURL((CFURLRef) tempUrl, kLSRolesAll, NULL, &prefAppUrl);

        NSBundle *bundle = [NSBundle bundleWithURL:(NSURL*)prefAppUrl];
        NSString *path = [bundle executablePath];

        NSTask *task = [[NSTask alloc] init];
        [task setLaunchPath:path];
        [task setArguments:[NSArray arrayWithObject:[tempUrl path]]];
        [task launch];

しかし、 Lion ではまったく機能しません。次のエラーが発生し、プレビュー (および TextEdit) にエラー ダイアログが表示されます。他のエディターはうまく機能します (TextMate など)。

011-10-11 16:29:36.867 Preview[11340:60b] PVPDFPageContainer initWithURL:file://localhost/var/folders/vt/pjtj7vg54x950234v__4363m0000gn/T/1dc07081-837d-4ecf-b4c3-9aefe92c3a16.pdf failed, error = Error Domain=NSCocoaErrorDomain Code=257 "The file “1dc07081-837d-4ecf-b4c3-9aefe92c3a16.pdf” couldn’t be opened because you don’t have permission to view it." UserInfo=0x100363fe0 {NSFilePath=/var/folders/vt/pjtj7vg54x950234v__4363m0000gn/T/1dc07081-837d-4ecf-b4c3-9aefe92c3a16.pdf, NSUnderlyingError=0x100363f80 "The operation couldn’t be completed. Operation not permitted"}
11.10.2011 16:30 
2011-10-11 16:28:37.517 Preview[11304:60b] PVPDFPageContainer initWithURL:file://localhost/private/var/folders/vt/pjtj7vg54x950234v__4363m0000gn/T/c0df6d94-49c9-4ce2-a362-8ec0e04d5104.pdf failed, error = Error Domain=NSCocoaErrorDomain Code=257 "The file “c0df6d94-49c9-4ce2-a362-8ec0e04d5104.pdf” couldn’t be opened because you don’t have permission to view it." UserInfo=0x7fec32a680e0 {NSFilePath=/private/var/folders/vt/pjtj7vg54x950234v__4363m0000gn/T/c0df6d94-49c9-4ce2-a362-8ec0e04d5104.pdf, NSUnderlyingError=0x7fec32a68080 "The operation couldn’t be completed. Operation not permitted"}

~/Library/Containersのパーミッションを変更する方法を説明している Preview と TextEdit で Lion の問題を修正する方法の多くのヒントを見つけましたが、Cocoa からドキュメントを開く際の問題は解決しませんでした。

Preview と TextEdit は、finder を使用する場合と、コマンドopen -a "/Applications/Preview.app/Contents/MacOS/Preview" pathToFileを発行するときに NSTask を使用する場合に問題なく同じファイルを開くことができますが、それでは十分ではありません。 、アプリケーションがいつ閉じられ、すぐに開いて終了するかを調べる必要があるためです。

誰か私に正しい方向を教えてください。私はすでにこの問題に2日間費やしました。どうもありがとうございました!

4

1 に答える 1

1

あなたは単に使用することができます:

[[NSWorkspace sharedWorkspace] openURL: 'URL to PDF'];

それはうまくいきます。

于 2011-10-13T20:38:55.450 に答える