【发布时间】:2020-06-03 18:07:38
【问题描述】:
我正在尝试将本机 swift 代码添加到我的 NativeScript 应用程序中。根据文档中的这些instructions,我可以将一个快速源文件添加到App_Resources/iOS/src/,然后直接在我的TypeScript代码中使用任何公开的类。
不幸的是,这不起作用。我会得到Cannot find name 'TestClass' 就可以了。
重现步骤:
- 使用 ios
tns create my-app-name --template tns-template-blank-ts获取新的 NS 项目
更新:我实际上是用vue init nativescript-vue/vue-cli-template testapp 创建的应用程序。这似乎导致了问题。
- 将
TestClass.swift添加到App_Resources/iOS/src/
import Foundation
public class TestClass: NSObject {
@objc public func echo(param: String) -> String {
return param
}
}
- 在任何 TypeScript 源文件中实例化它
let instance = new TestClass() - 做
tns debug ios - 编译将失败并显示
Cannot find name 'TestClass'
我还尝试使用 TNS_TYPESCRIPT_DECLARATIONS_PATH="$(pwd)/typings" tns build ios 生成 TypeScript 类型,或者只是使用 declare let KeyCommander: any; 将其删除,以消除这是与 TS 相关的问题的可能性。第一种方法不会为我的自定义类生成任何类型,因此 TypeScript 代码仍然无法编译。第二种方法让我们编译 TS 代码,但在使用 JS ERROR ReferenceError: Can't find variable: TestClass 执行时崩溃。
我还验证了 swift 文件确实是通过插入一个会使构建过程崩溃的语法错误来编译的。
我的 NativeScript 版本是6.4.0。
我错过了什么?
更新:我刚刚意识到我实际上是使用vue init nativescript-vue/vue-cli-template testapp 创建的应用程序。我验证了在使用 tns cli 创建的应用程序中提到的Tyler Blake's answer 所描述的过程确实有效。在我刚刚使用 vue init 创建的应用程序中,它没有,objc!nsswiftsupport.d.ts 没有生成。
现在的问题是:造成这种差异的原因是什么?
【问题讨论】:
标签: ios swift typescript vue.js nativescript