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