我正在尝试使用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,但没有成功。
答案 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"]);
}