首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从可可中的AppleScript数据中提取NSAppleEventDescriptor数据并进行分析

如何从可可中的AppleScript数据中提取NSAppleEventDescriptor数据并进行分析
EN

Stack Overflow用户
提问于 2009-08-07 21:04:45
回答 3查看 3.4K关注 0票数 5

我正在做的是在可可中执行一个AppleScript。它以NSAppleEventDescriptor,的形式返回一些数据,NSLog()输出如下所示:

代码语言:javascript
复制
<NSAppleEventDescriptor: 'obj '{ 'form':'name', 'want':'dskp', 'seld':'utxt'("69671872"), 'from':'null'() }>

我想把这些数据转换成一个NSDictionaryNSArray,或者一些有用的东西,这样我就可以从中提取东西(特别是我要找的是持有"69671872“数字的字段)。它似乎是某种类型的数组,但我对苹果事件的了解相当有限。知道怎么做吗?

下面是创建上述数据的源:

代码语言:javascript
复制
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];

谢谢您的帮助!)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-07 23:50:01

代码语言:javascript
复制
[[aDescriptor descriptorForKeyword:keyAEKeyData] stringValue]
票数 2
EN

Stack Overflow用户

发布于 2009-08-07 23:51:22

这是记录,不是名单。尝试descriptorForKeyword:,传递与您想要的四个字符代码匹配的常量。(常量在Apple标头中声明。)

票数 3
EN

Stack Overflow用户

发布于 2021-05-30 01:11:32

我无法让Peter的解决方案工作在我的AppleScript列表包装成一个NSAppleEventDescriptor。相反,我找到了将列表强制到ObjC数组的以下解决方案:

代码语言:javascript
复制
           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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1247013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档