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