Нужна помощь в написании оболочки результатов SQLite3 Objective-C - PullRequest
1 голос
/ 30 января 2010

Я пытаюсь написать класс обёртки набора результатов sqlite для iPhone, и я хотел бы иметь возможность динамического вызова sqlite3_column_int или sqlite3_column_text?

Например, в моем методе fetchAll я бы не хотел знать, какие именно данные я возвращаю, я просто хочу их вернуть.

Моя цель - иметь класс, который не заботится о том, какие данные у вас есть в базе данных, он получает то, что вы хотите, и ему не нужно беспокоиться о типе данных.

Я думал об использовании performSelector, но я не уверен, как это будет работать.

Как бы я спроектировал такой класс, чтобы его клиентам было легче взаимодействовать с sqlite?

Спасибо!

Ответы [ 3 ]

1 голос
/ 30 января 2010

Я не совсем уверен, что понимаю, но я полагаю, что вы могли бы написать несколько методов Objective-C, содержащих небольшое количество чистого C, и вызвать на них executeSelector. К сожалению, API SQLite3 для iPhone вроде отстой.

1 голос
/ 30 января 2010

Вы можете взглянуть на то, как это делают другие упаковщики. Например, вот источник объекта набора результатов из базы данных Flying Meat: 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

1 голос
/ 30 января 2010

Нет, вы не можете использовать функцию Objective C для вызова функции C таким способом (executeSelector, то есть). Вы можете вызвать код С в пределах-C. Одним из подходов может быть сохранение указателей на функции C, которые вы хотите вызвать, а затем реализация некоторой логики для выбора подходящего указателя функции для ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...