我正在尝试在项目中使用 ParseKit。我认为已经正确定义了一个语法,每次我尝试将该语法与测试字符串一起使用时,我都会在控制台中获得一个日志并崩溃:
p: (null) * -[__NSArrayM insertObject:atIndex:]: 对象不能为 nil
这是什么意思?我做错了什么?
我正在尝试在项目中使用 ParseKit。我认为已经正确定义了一个语法,每次我尝试将该语法与测试字符串一起使用时,我都会在控制台中获得一个日志并崩溃:
p: (null) * -[__NSArrayM insertObject:atIndex:]: 对象不能为 nil
这是什么意思?我做错了什么?
ParseKit 的开发者在这里。我能够找到您发送给我的语法问题(场外)。
问题出在这一行:
optionalWhere = empty | 'WHERE' comparisons;
在这里,您有一个“空”,应该是Empty
.
所有内置的 ParseKit 解析器都是大写的,例如:Empty
.
如果你能解决这个问题,你就很好。
将来要查找/修复此类问题:在 ParseKit 项目中进行全局搜索:“doTestGrammar”。
在该方法中,将现有语法替换为您的语法。然后在打开断点的调试模式下运行“DebugApp”目标。这将导致您崩溃。从那里,在堆栈跟踪中备份到最后一个调用的解析器回调,并将PKAssembly
发送到该解析器回调方法的内容作为 arg 打印出来。打印的控制台输出PKAssembly
会将您指向语法中存在错误的行。在这种情况下,它是:
[] /empty/ /|/ /'WHERE'/ /comparisons^
希望能帮助您调试未来的问题。