Невозможно проанализировать результат, возвращенный методом NSAppleScript executeAndReturnError - PullRequest
2 голосов
/ 20 октября 2011

Это код, который я использую:

NSDictionary *errorInfo=nil;
NSString *source=@"tell application \"Mail\"\nget name of mailbox of every account\nend tell";
NSAppleScript *run = [[NSAppleScript alloc] initWithSource:source];
NSAppleEventDescriptor *aDescriptor=[[NSAppleEventDescriptor alloc]init];
aDescriptor=[run executeAndReturnError:&errorInfo];
[aDescriptor coerceToDescriptorType:'utxt'];
NSLog(@"result:%@",[aDescriptor stringValue]);

Вывод, который я получил: результат: (ноль)

Пожалуйста, помогите мне кто-нибудь в этом. Спасибо заранее:)

1 Ответ

3 голосов
/ 20 октября 2011

IIRC, который возвратит дескриптор списка, заполненный дескрипторами списка.Вам нужно перебрать их и извлечь нужную информацию.Вы также инициализируете дескриптор, а затем немедленно перезаписываете его указатель.Сделайте что-то вроде (не проверено):

NSDictionary *errorInfo = nil;
NSString *source = @"tell application \"Mail\"\nget name of mailbox of every account\nend tell";
NSAppleScript *run = [[NSAppleScript alloc] initWithSource:source];
NSAppleEventDescriptor *aDescriptor = [run executeAndReturnError:&errorInfo];
NSInteger num = [aDescriptor numberOfItems];

// Apple event descriptor list indexes are one-based!
for (NSInteger idx = 1; idx <= num; ++idx) {
    NSAppleEventDescriptor *innerListDescriptor = [aDescriptor descriptorAtIndex:idx];

    NSInteger innerNum = [innerListDescriptor numberOfItems];

    for (NSInteger innerIdx = 1; innerIdx <= innerNum; ++innerIdx) {
        NSString *str = [[innerListDescriptor descriptorAtIndex:innerIdx] stringValue];
        // Do something with str here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...