Скрипт Бридж и iPhoto - широта / долгота информации только для NSInteger? - PullRequest
0 голосов
/ 09 сентября 2011

Я пытаюсь получить доступ к информации GPS в изображениях iPhoto с помощью Script Bridge в Obj-C (XCode 4.1, SDK 10.7). Вот фрагмент кода:

 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. [я id] компилируется, но вылетает. Опять же, как мне получить это свойство?

Я пытался создать приложение для XCode 4 / SDK 10.7, но безуспешно.

1 Ответ

0 голосов
/ 24 июня 2012

Это возможно, получив его свойства

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"]);
}
...