1

sdefユーティリティから生成されたFinder.hヘッダーを使用していますが、多くのFinder SBメソッドでは、何か意味のあることを行うためにFinderItemタイプのオブジェクトが必要なようです。

ファイルへのパスまたはURIに基づいてそれらのオブジェクトの1つを作成するにはどうすればよいですか?

私が持っている最も遠いのは、SBガイドで簡単に説明されている[SBObject initWithProperties]メソッドですが、そこからどこに行くべきかわかりません。次に、Objective-Cに変換したい基本的なAppleScriptは、別の言い方をすれば次のようになります。

set myFile to POSIX file 
  "/untitled folder/funneh/keyboardcat.mov" 
4

3 に答える 3

2

オブジェクトだけが必要な場合はFinderItem、次の行を変更すると、slfのコードが機能します。

NSURL* theFileURL = [pathString fileURLWithPath:pathString];

NSURL* theFileURL = [NSURL fileURLWithPath:pathString];

しかし、HFSスタイルのパスが必要な場合は、このスニペットを見つけました。

NSString* path = [(NSString*)CFURLCopyFileSystemPath((CFURLRef)theFileURL, kCFURLHFSPathStyle) autorelease];
 NSLog(@"path= %@",path);

これは、「ハードディスク:無題のフォルダ:funneh:keyboardcat.mov」の文字列を返します。

スニペットはここにあります。

于 2010-07-12T17:36:14.783 に答える
1

についてはよくわかりませんSBObjectが、必要な場合はFinderItem*、この方法で入手できます。

NSString* pathString = [@"/untitled folder/funneh/keyboardcat.mov" stringByExpandingTildeInPath];
NSURL* theFileURL = [pathString fileURLWithPath:pathString];
FinderApplication* finder = [SBApplication applicationWithBundleIdentifier:@"com.apple.finder"];
FinderItem * theItem = [[finder items] objectAtLocation: theFileURL];
于 2010-07-12T13:23:04.860 に答える
0

非常に詳細なAppleScript関連の回答を読んだ後、私はappscriptを使い続けることにしました。これにより、作業がはるかに簡単になりました。

FNApplication *finder = [[FNApplication alloc] initWithName:@"Finder.app"];
FNReference *ref = [[finder files] byName: @"/users/movies/kitteh.mov"];
于 2010-07-18T18:44:44.487 に答える