Obj-C (XCode 4.1、SDK 10.7) の Script Bridge を使用して iPhoto 画像の GPS 情報にアクセスしようとしています。コード スニペットを次に示します。
iPhotoApplication *iPhoto = [SBApplication applicationWithBundleIdentifier:@"com.apple.iPhoto"];
NSArray *selection = [iPhoto selection];
for ( iPhotoPhoto *i in selection ) {
NSLog(@"'%@': lat %ld, lon %ld", [i imageFilename], [i latitude], [i longitude]);
}
残念ながら、緯度と経度のプロパティは NSInteger 型であり、結果が非常に不正確 (たとえば 38,120) になるため、まったく役に立ちません。同じプロパティに Applescript でアクセスすると、正しい値が得られます (例: 38.03555555,-120.401388883333)。Obj-C でこの情報を取得するより良い方法はありますか?
また、iPhotoPhoto クラスには「id」というプロパティがありますが、id は Obj-C の予約語であるため取得できません。[i id] コンパイルはできますが、クラッシュします。繰り返しますが、このプロパティを取得するにはどうすればよいですか?
XCode 4/SDK 10.7 の appscript をビルドしようとしましたが、成功しませんでした。