0

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 をビルドしようとしましたが、成功しませんでした。

4

1 に答える 1

0

これは、そのプロパティを取得することで可能です

NSDictionary *dict;
for ( iPhotoPhoto *i in selection ) {
      dict = [i properties];
      NSLog(@"'%@': lat %@, lon %@, ID %@", [i imageFilename], [dict objectForKey:@"latitude"], [dict objectForKey:@"longitude"], [dict objectForKey:@"id"]);
}
于 2012-06-24T00:28:08.910 に答える