1

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

4

1 回答 1

2

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

此外,您的“名称”键不是在 applescript 中使用的好键,因为“名称”对 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”。

于 2012-11-01T18:07:36.730 回答