我正在做的是在可可中执行一个AppleScript。它以NSAppleEventDescriptor,的形式返回一些数据,NSLog()输出如下所示:
<NSAppleEventDescriptor: 'obj '{ 'form':'name', 'want':'dskp', 'seld':'utxt'("69671872"), 'from':'null'() }>我想把这些数据转换成一个NSDictionary或NSArray,或者一些有用的东西,这样我就可以从中提取东西(特别是我要找的是持有"69671872“数字的字段)。它似乎是某种类型的数组,但我对苹果事件的了解相当有限。知道怎么做吗?
下面是创建上述数据的源:
NSString *appleScriptSource = [NSString stringWithFormat:@"tell application\"System Events\"\n return desktop 1\n end tell"];
NSDictionary *anError;
NSAppleScript *aScript = [[NSAppleScript alloc] initWithSource:appleScriptSource];
NSAppleEventDescriptor *aDescriptor = [aScript executeAndReturnError:&anError];
NSLog (@"%@", aDescriptor);
[aScript release];谢谢您的帮助!)
发布于 2009-08-07 23:50:01
[[aDescriptor descriptorForKeyword:keyAEKeyData] stringValue]发布于 2009-08-07 23:51:22
这是记录,不是名单。尝试descriptorForKeyword:,传递与您想要的四个字符代码匹配的常量。(常量在Apple标头中声明。)
发布于 2021-05-30 01:11:32
我无法让Peter的解决方案工作在我的AppleScript列表包装成一个NSAppleEventDescriptor。相反,我找到了将列表强制到ObjC数组的以下解决方案:
NSAppleEventDescriptor *listDescriptor = [result coerceToDescriptorType:typeAEList];
NSMutableArray *thisArray = [[NSMutableArray alloc] init];
for (NSInteger i = 1; i <= [listDescriptor numberOfItems]; ++i) {
NSAppleEventDescriptor *stringDescriptor = [listDescriptor descriptorAtIndex:i];
[thisArray addObject: stringDescriptor.stringValue];
}
NSLog(@"array result: %@", thisArray);https://stackoverflow.com/questions/1247013
复制相似问题