저는 Apple Events의 ODBEditorSuite 편집기 부분을 구현하는 간단한 텍스트 편집기로 작업하므로 내 응용 프로그램이 QuickCursor로 편집 기능을 제공 할 수 있습니다. 전송해야 할 이벤트가 매우 간단하며, 같은 코드를 많이 공유, 그래서 이런 방법으로 그것을 싸서했습니다 NSLog()
디버깅을 사용하여ODBEditorSuite Apple Help 부두로 도움을 주시겠습니까?
-(BOOL)postODBEditorAppleEvent:(OSType)type
withOldLocation:(NSString *)oldPath
newLocation:(NSString *)newPath
{
NSData *targetBundleID = [@"com.hogbaysoftware.QuickCursor" dataUsingEncoding:NSUTF8StringEncoding];
NSAppleEventDescriptor *targetDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeApplicationBundleID data:targetBundleID];
NSAppleEventDescriptor *appleEvent = [NSAppleEventDescriptor appleEventWithEventClass:kODBEditorSuite eventID:type targetDescriptor:targetDescriptor returnID:kAutoGenerateReturnID transactionID:kAnyTransactionID];
NSAppleEventDescriptor *directObjectDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeFSRef data:[oldPath dataUsingEncoding:NSUTF8StringEncoding]];
[appleEvent setParamDescriptor:directObjectDescriptor forKeyword:keyDirectObject];
if(newPath != nil){
NSAppleEventDescriptor *newLocationDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeFSRef data:[newPath dataUsingEncoding:NSUTF8StringEncoding]];
[appleEvent setParamDescriptor:newLocationDescriptor forKeyword:keyNewLocation];
}
if(self.senderToken != nil){
NSAppleEventDescriptor *tokenDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeWildCard data:self.senderToken];
[appleEvent setParamDescriptor:tokenDescriptor forKeyword:keySenderToken];
}
if (self.customPath != nil){
NSData *customPathData = self.customPath;
NSAppleEventDescriptor *customPathDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeUnicodeText data:customPathData];
[appleEvent setParamDescriptor:customPathDescriptor forKeyword:keyFileCustomPath];
}
AEDesc reply = {typeNull, NULL};
OSStatus status = noErr;
status = AESend([appleEvent aeDesc], &reply, kAEWaitReply, kAENormalPriority, kAEDefaultTimeout, NULL, NULL);
return status == noErr;
}
, 내가 확인했습니다 그 Apple Event가 보내고 있으며 directObject 디스크립터에 적절한 데이터가 있음을 알릴 수 있습니다. 그러나 Quick Cursor 측면에서는 Console.app에 5/17/10 12:41:15 PM QuickCursor[177] Got ODB editor event for unknown file.
과 같은 메시지가 계속 표시됩니다. 내가 소스에서 QuickCursor를 구축하고 그것이 directObject 설명자에서 적절한 경로를 얻지 못하고 있는지 확인할 수있었습니다.
그래, NSAppleEventDescriptor
물건이 나에게는 꽤 외국이고 옛날 학교 회색 턱수염 속임수의 채찍이있다 :-P 그러나 나는 누군가가 듣기를 원한다는 말을 듣기를 원한다. 어쩌면 내가 잘못하고있는 것을 지적 할 수 있습니다. 미리 감사드립니다.