如何解释作为NSAppleScript结果返回的记录

时间:2012-11-01 15:49:17

标签: objective-c applescript appleevents applescript-objc

我使用NSAppleScript的executeAndReturnError方法从objective-c应用程序运行applescript。这将返回包含脚本结果的NSAppleEventDescriptor对象。我的脚本返回一个applescript记录。如何解释objective-c中的记录?例如,如果返回的脚本记录是{name:“Jakob”,phone:“12345678”}如何在name属性中获取字符串“Jakob”?

1 个答案:

答案 0 :(得分:1)

这是将记录转换为字典的方法。请注意,我没有尝试这个,但它应该工作。

另外,你的“名字”键不是在applescript中使用的好键,因为“name”对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”。