Мы столкнулись с подобным вопросом, когда впервые начали работу над Оформить заказ , наше решение заключалось в том, чтобы закодировать все приложение на Python, используя PyObjC. Checkout 1 имеет серверную часть sqlite, Checkout 2 имеет серверную часть postgres.
Есть несколько действительно зрелых и мощных ORM на стороне Pyton, таких как SQLObject , с которыми довольно просто работать (мы использовали его для Checkout 1.0) и SQLAlchemy , который является более мощным, но немного сложнее обернуть ваш мозг (мы использовали его для Checkout 2.0).
Один из подходов, который вы можете оценить, - это создание приложения в Objective-C, но написание модели данных и кода подключения / администрирования базы данных на Python. Вы можете использовать PyObjC для создания пакета плагинов из этого кода, который затем загружаете в свое приложение. Это более или менее тот подход, который мы использовали для Checkout Server, который использует инструмент командной строки Foundation для администрирования сервера postgres и баз данных в нем. этот инструмент CLI, в свою очередь, загружается в комплект плагинов Python, в котором содержится весь фактический код базы данных. Конечные пользователи в основном взаимодействуют с базой данных через панель «Системные настройки», которая не имеет представления о том, как выглядит база данных, но вместо этого использует инструмент командной строки для взаимодействия с ней.
Загрузка плагина проста:
NSBundle *pluginBundle = [NSBundle bundleWithPath:pluginPath];
[pluginBundle load];
Возможно, вам потребуется создать файлы .h для классов в вашем комплекте, к которым вы хотите иметь доступ из кода Obj-C.