无法使noodle-lib-objc在swift中工作

ryoqjall  于 2022-12-02  发布在  Swift
关注(0)|答案(1)|浏览(116)

我正在编写一个speedcubing计时器,我正在尝试让tnoodle-lib库(link here)与我的Xcode项目一起工作。到目前为止,我已经成功地导入了我认为的所有东西(我是一个编程新手),但我不知道如何用它实际生成扰码。有人能帮帮我吗?
这是我正在做的事情:
在我的Header.h桥接文件中:

#ifndef Bridging_Header_h
#define Bridging_Header_h

#import "org/worldcubeassociation/tnoodle/scrambles/PuzzleRegistry.h"
#import "org/worldcubeassociation/tnoodle/scrambles/Puzzle.h"
#import "org/worldcubeassociation/tnoodle/svglite/Svg.h"
#import "org/worldcubeassociation/tnoodle/svglite/Dimension.h"

NSString * const SCRAMBLE = "/("NSSOrgWorldcubeassociationTnoodleScramblesPuzzleRegistry_get_THREE())"

#endif /* Bridging_Header_h */

在我的项目构建设置中,我导入了github页面上的tnoodle-lib-objc,但我不知道如何使用它来生成scramble,因为它看起来像是用java来做的,而且我不知道如何将它从java转换到swift。

pzfprimi

pzfprimi1#

我认为理解桥接头的作用是很好的。当我们使用Objective-C代码时,我们需要“桥接”这段代码,这样它就可以在Swift中使用--这就是桥接头的作用。它应该只作为我们需要的Objective-C代码的中间体,也就是import语句。
您的桥接头应该如下所示,这是一种非常简单的基本方法:

#ifndef Bridging_Header_h
#define Bridging_Header_h

#import "org/worldcubeassociation/tnoodle/scrambles/PuzzleRegistry.h"
#import "org/worldcubeassociation/tnoodle/scrambles/Puzzle.h"

#endif

这使我们可以访问tnoody Puzzle和PuzzleRegistry组件。
从这里,在我们的Swift代码中--在你的主程序中的任何地方,你都应该能够调用加扰器。例如:

OrgWorldcubeassociationTnoodleScramblesPuzzleRegistry.TWO.getScrambler().generateScramble()

.TWO是scramble类型,可以是.THREESQ1,任何tnoody scramble类型。如果你参考tnoody repo,你可以看到他们是如何定义他们的Puzzle的。每个“puzzle类型”都有一个.getScrambler()方法,它返回一个OrgWorldcubeassociationTnoodleScramblesPuzzle对象。其中.generateScramble()可以被调用。这将为你选择的谜题类型生成一个争夺。
请注意,返回的对象是可选的,您将需要展开以获取String。

相关问题