Я пытаюсь посчитать слова в документе Pages (формат документа RTF), используя мост сценариев. (Я могу сделать это, используя NSApplescript, но я бы предпочел, чтобы в моем коде не было всей клейкой ленты, поддерживающей appleScript)
Когда я выполняю эту задачу с использованием appleScript (и API-интерфейсов NSAppleScript), я могу сделать это очень просто (и успешно):
on wordCount(appName,docName)
local mydoc
local wordcount
tell application appName
set mydoc to document docName
set wordcount to count of words of mydoc
log "wordcount = " & wordcount
return wordcount
end tell
end wordCount
Однако, когда я пробую эквивалент с использованием скриптового моста, все мои объекты, похоже, будут иметь нулевое содержимое. Мой код выглядит следующим образом:
+ (NSUInteger) wordCountForApp: (SBApplication*) sbApp docNamed: (NSString*) docName
{
PagesApplication *pages = (PagesApplication*)sbApp;
PagesDocument *doc = [[pages documents] objectWithName:docName];
PagesText *text = [doc bodyText];
SBElementArray *words = [text words];
NSUInteger wc = [words count];
NSLog(@"Pages word count = %ul", (unsigned int) wc);
return wc; // wc comes back as zero always ... grrrr
}
Я проверил, что я запускаю этот материал в основном потоке (и этот эквивалентный код работает против TextEdit). Любые идеи относительно того, что происходит / как обойти?
Спасибо, что прочитали это далеко ....