我使用nsapplescript使用executeandreturnerror方法从Objective-C应用程序运行AppleScript。这将返回一个包含脚本结果的NSAppleEventDescriptor对象。我的脚本返回一个苹果记录。如何解释Objective-C中的记录?例如,如果返回的脚本记录为{name:" jakob",则电话:" 12345678"}如何在名称属性中获取字符串" jakob"?
这是一种将记录转换为词典的方法。请注意,我没有尝试过,但应该起作用。
另外,您的"名称"键不是AppleScript中使用的好键,因为"名称"具有AppleScript的其他含义。我经常在记录中使用它遇到问题。我建议更改它之类的东西,例如" thatame"或在bars | 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"。