gpt4 book ai didi

macos - Swift NSScriptCommand 执行默认实现

转载 作者:搜寻专家 更新时间:2023-11-01 05:51:33 25 4
gpt4 key购买 nike

我在 Objective C 中使用了这段代码:

@implementation KDOrderInfo
- (id)performDefaultImplementation {
NSString *theRequest = [self directParameter];
NSDictionary *arguments = [self evaluatedArguments];
NSLog(@"arguments = %@ %ld",arguments, [arguments count]);
NSLog(@"theRequest----> %@",theRequest);
/*.......
.....*/
return @YES
}

此代码在 Objective C 中工作正常。我将这段代码转换为 Swift 代码如下:

class OrderInfo : NSScriptCommand {
override func performDefaultImplementation() -> AnyObject! {
let theRequest: AnyObject! = self.directParameter
let arguments = self.evaluatedArguments
println("arguments = \(arguments) argumentsCount = \(arguments.count)")
println("theRequest----> \(theRequest)")
/*.......
.....*/
return "OK"
}
}

当我运行 applescript 时出现错误(InfoMaker 是我的应用程序的名称): InfoMaker 出现错误:未定义某个对象的处理程序。

方法:

override func application(theApp:NSApplication,delegateHandlesKey theKey:String) -> Bool{ 
println("scripting key = \(theKey)");
let thekeys = ["pathToXML", "saveXMLFlag", "webserviceName","methodName","pathToInfoFiles","fileToCheck","scriptingProperties"]

if thekeys.containsString(theKey.lowercaseString, searchcase:NSStringCompareOptions.CaseInsensitiveSearch) {
//[self prefsToVars];
println("YES")
return true;
} else {
println("NO")
return false
}
}

在我的应用程序中,委托(delegate)人对 applescript 做出响应。

我还尝试了 Apple 的“SimpleScriptingVerbs”示例,但在我的 Swift 实现中遇到了同样的错误。我希望有人能帮助找到问题并提出建议。

最佳答案

与此同时,我找到了问题的解决方案并让应用程序使用脚本命令。

您必须在脚本定义文件 (.sdef) 中提及的命令的 cocoa 类名与 XCode (Swift) 中的类名不同,事实就是如此对于 Objective-C。

相反,您必须像这样将项目名称/模块添加到类中:MyProject.MySwiftCommandClassName

如果不确定正确的名称是什么,在您的 Swift 类中,您可以使用以下代码获取要在 .sdef 文件中使用的正确名称:

class func classString() -> String {
return NSStringFromClass(self)
}

您的 .sdef 文件可能与此类似:

<dictionary title="MyAp">
<suite name="MyAp Suite" code="MyAp" description="MyAp Scripts">
<command name="myCommand" code="MyApMyCm" description="...">
<cocoa class="MyProject.MySwiftCommandClassName"/>
[...]

关于macos - Swift NSScriptCommand 执行默认实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com