我使用NSAppleScript所述executeAndReturnError方法的目标c应用运行AppleScript。 此返回包含脚本的结果的NSAppleEventDescriptor对象。 我的脚本返回一个AppleScript记录。 如何解释在Objective-C的记录? 例如,如果返回的脚本记录是{名称:“雅各布”,电话:“12345678”}如何获得的name属性字符串“雅各布”?
Answer 1:
下面就来记录转换为一个字典的方法。 请注意,我没有尝试这一点,但它应该工作。
另外,你的“姓名”键不是AppleScript的使用,因为“名”具有其他含义的AppleScript良好的关键。 我经常不得不使用,在创纪录的问题。 我建议改变它像“theName”或在酒吧使用它|名称|。
-(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:”在字典中的实例方法来获取“雅各布”。
文章来源: How do I interprete a record returned as a NSAppleScript result