0

我正在尝试使用 Obj-C 中的脚本桥(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,但没有成功。

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 回答