我使用第三方库https://github.com/fpg1503/Aho-Corasick-Swift创建Trie对象的实例。构建Trie对象的示例代码如下:
let trie = Trie.builder()
.add(keyword: "hers")
.add(keyword: "his")
.add(keyword: "she")
.add(keyword: "he")
.build()
但是,在我的情况下,关键字的数量大约为30万,这需要大量构建此Trie对象。我的目标是仅在应用程序外部构建一次trie对象,并将其保存以供App推断任何文本。像这样:
let emits = trie.parse(text: "any text")
但是,我正在努力快速保存此Trie对象。在Java(针对android)中,我是如此轻松地完成了此任务,但是在Swift中,这似乎很难做。我正在努力使用Codable来实现这一点,但这需要从开始就遵循codable的所有类。我试图复制(https://github.com/fpg1503/Aho-Corasick-Swift)的所有代码,并更改所有类以使其符合编码要求。我的项目现在可以成功构建,但是在编码此Trie对象时出现运行时错误:
线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffee0005ff8)
如何迅速实现?
答案 0 :(得分:2)
问题似乎在于状态是递归的,因此在对状态进行编码时,您会得到无限的递归,直到生成堆栈溢出为止。