Script Bridge和iPhoto - lat / lon信息仅限NSInteger?

时间:2011-09-09 06:48:28

标签: gps latitude-longitude scripting-bridge iphoto

我正在尝试使用Obj-C中的Script Bridge(XCode 4.1,SDK 10.7)访问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,但没有成功。

1 个答案:

答案 0 :(得分: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"]);
}