如何interprete记录返回一个NSAppleScript结果(How do I interpr

2019-10-17 08:26发布

我使用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