我正在尝试为iPhone编写一个sqlite结果集包装器类,我希望能够动态调用sqlite3_column_int
或sqlite3_column_text
?
例如,在我的fetchAll
方法中,我想知道我要返回的确切数据,我只想返回它。
我的目标是建立一个不关心数据库中的数据的类,它可以为您提供所需的数据,而且无需担心数据类型。
我正在考虑使用performSelector
,但我不确定它是如何工作的。
我如何设计这样一个班级,让班级的客户更容易与sqlite
互动?
谢谢!
答案 0 :(得分:1)
不,你不能使用Objective-C功能以这种方式调用C函数(performSelector就是这样)。您可以在objective-C中调用C代码。一种方法可能是保持函数指向要调用的C函数,然后实现一些逻辑来选择适当的函数指针来引用。
答案 1 :(得分:1)
我不太清楚我理解,但我想你可能会编写一些包含少量纯C的Objective-C方法并在那些上调用performSelector。不幸的是,用于iPhone的SQLite3 API很糟糕。
答案 2 :(得分:1)
您可以看看其他包装器是如何做到的。例如,以下是Flying Meat Database的结果集对象的来源: http://code.google.com/p/flycode/source/browse/trunk/fmdb/src/FMResultSet.h http://code.google.com/p/flycode/source/browse/trunk/fmdb/src/FMResultSet.m