在 nativescript (with typescript) 项目中使用 obj-c 类时的编组设置

Posted

技术标签:

【中文标题】在 nativescript (with typescript) 项目中使用 obj-c 类时的编组设置【英文标题】:Marshalling setup when using obj-c class in nativescript (with typescript) project 【发布时间】:2020-12-26 17:23:54 【问题描述】:

按照https://nativescript.org/blog/adding-objective-c-code-to-a-nativescript-app/ 上的说明,我设置了一个非常简单的 nativescript 项目(下面有 typescript):

    tns 创建 simpleApp --tsc tns平台添加ios tns 准备 ios 通过 xcode 运行生成的 ios 项目。

应用程序运行正常。

接下来我在项目中添加了一个自定义的 obj-c 类(App_Resources/iOS/src/Stuff .h 和 .m):

#import <Foundation/Foundation.h>

@interface Stuff: NSObject
+(void)doStuff;
@end
#import "Stuff.h"

@implementation Stuff
+(void)doStuff 
    NSLog(@"I should see this...");

@end

还有一个module.modulemap:

module Stuff 
    header "Stuff.h"
    export *

tns prapare ios 命令成功处理了该类。

当我尝试将“Stuff”对象添加到打字稿源时,我得到一个cannot find name Stuff。 如何让 typescript 和 obj-c 之间的编组/元数据工作?我需要运行一些脚本吗?添加进口?教程没有提到任何关于那...

这是我添加到 nativescript 默认模板应用程序中的:

onTap() 
        this._counter--;
        this.updateMessage();
        Stuff.doStuff();
    

并希望在点击按钮时看到日志文本...

【问题讨论】:

【参考方案1】:

我找到了一种将所需的 .d.ts 文件添加到项目中的方法: generating-typescript-typings

在您的 nativescript 项目的 src-root 中运行以下命令:

TNS_TYPESCRIPT_DECLARATIONS_PATH="$(pwd)/typings" tns build ios

它会生成一个类型文件夹,其中包含 ios 类的所有 .d.ts 文件,包括手动创建的 Stuff 类。现在可以正确解释 Typescript 代码......新的 obj-c 类一旦被上面的行处理,就可以在 TS 代码中寻址。

【讨论】:

以上是关于在 nativescript (with typescript) 项目中使用 obj-c 类时的编组设置的主要内容,如果未能解决你的问题,请参考以下文章

nativescript-couchbase-plugin 查询

PostgreSQL JOIN with array type with array elements order,如何实现?

关于 Vue 3 + TypeScript 和 Augmenting-Types-for-Use-with-Plugins 的问题

如何在 Nativescript-Vue 中使用 nativescript-drawingpad?

Array types are now written with the brackets around the element type问题的解决方法

[Compose] 19. Leapfrogging types with Traversable