Как мне интерпретировать запись, возвращенную как результат NSAppleScript
Я запускаю яблочный скрипт из приложения Objective-C, используя NSAppleScript метод executeAndReturnError. Это возвращает объект NSAppleEventDescriptor, содержащий результат сценария. Мой скрипт возвращает запись appleScript. Как интерпретировать запись в target-c? Например, если возвращаемая запись скрипта - { name:"Jakob", phone:"12345678" }, как мне получить строку "Jakob" в свойстве name?
1 ответ
Вот метод для преобразования записи в словарь. Обратите внимание, что я не пробовал это, но это должно работать.
Кроме того, ваш ключ "имя" не очень подходит для использования в applecript, потому что "имя" имеет иное значение для appleScript. У меня часто были проблемы с использованием этого в записи. Я бы предложил изменить что-то вроде "theName" или использовать его в барах |name|.
-(NSDictionary*)recordToDictionary:(NSAppleEventDescriptor*)theDescriptor {
NSUInteger j,count;
id thisDescriptor = [theDescriptor descriptorAtIndex:1];
count = [thisDescriptor numberOfItems];
NSMutableDictionary* thisDictionary = [NSMutableDictionary dictionaryWithCapacity:count/2];
for (j=0; j<count; j=j+2) {
NSString* theKey = [[thisDescriptor descriptorAtIndex:(j+1)] stringValue];
NSString* theVal = [[thisDescriptor descriptorAtIndex:(j+2)] stringValue];
[thisDictionary addEntriesFromDictionary:[NSDictionary dictionaryWithObject:theVal forKey:theKey]];
}
return (NSDictionary*)[[thisDictionary retain] autorelease];
}
Конечно, после записи в формате словаря вы можете просто использовать метод экземпляра "valueForKey:" в словаре, чтобы получить "Jacob".