2015-12-28 2 views
0

Je travaille sur XCode (5) sous OSX 10.9.5, en créant un projet ApplescriptOjbC.Définition de la valeur de propriété de l'objet dans Applescript Objectif-C

J'ai créé une nouvelle applescript dans le projet avec une classe (script) nommée "MSDropBox" et je l'utilise pour accepter le dépôt de fichiers. Les fichiers supprimés ont leurs chemins de fichier lus correctement. Je veux juste maintenant passer ce tableau au contrôleur de tableau, qui est utilisé comme source pour une table. Je veux que la table reflète les fichiers glissés.

J'ai une méthode dans la classe AppDelegate qui définit la valeur et je l'appelle à partir de la classe MSDropBox. Cependant, cela affecte les valeurs de la table. Je crois qu'il fait appel à la méthode de la classe, mais pas à l'objet. Comment est-ce que j'affecte l'objet?

Ci-dessous est la classe MSDropBox:

script MSDropBox 
    property parent : class "NSBox" 
    property window : missing value 
    property thisPageList : missing value 
    on draggingEntered_(sender) 
     log "entered" 
     set pb to sender's draggingPasteboard() 
     set theOptions to {NSPasteboardURLReadingFileURLsOnlyKey:1} 
     return pb's canReadObjectForClasses_options_({current application's |NSURL|}, theOptions) 
    end draggingEntered_ 
    on performDragOperation_(sender) 
     log "perform" 
     -- Get the file paths 
     set pb to sender's draggingPasteboard() 
     set theOptions to {NSPasteboardURLReadingFileURLsOnlyKey:1} 
     set theURLs to pb's readObjectsForClasses_options_({current application's |NSURL|}, theOptions) 
     log theURLs 
     repeat with thisURL in theURLs 
      set thisURLStr to (characters 1 thru -1 of ((thisURL's |path|()) as string) as string) 
      set thisPageList to thisPageList & thisURLStr as list 
     end repeat 
     return true 
    end performDragOperation_ 
    on concludeDragOperation_(sender) 
     log "concludeDragOperation_" 
     tell class "AppDelegate" of current application 
      setPageList_(thisPageList) 
     end tell 
    end concludeDragOperation_ 
end script 

Répondre

1

En Objective-C, il est

AppDelegate *appDelegate = (AppDelegate *)[[NSApplication sharedApplication] delegate]; 
[appDelegate setPageList:thisPageList]; 

L'équivalent AppleScriptObjC est

set appDelegate to current application's NSApplication's sharedApplication()'s delegate() 
appDelegate's setPageList_(thisPageList) 

Je ne suis pas sûr que AppleScriptObjC reconnaît l'application déléguer la méthode sans coulée de type, peut-être que vous devez ajouter as AppDelegate

+0

Merci beaucoup! Cela a fait l'affaire. –