Хорошая база данных, library/ORM для разработки какао

Вы должны быть в состоянии узнать фактический ключ, используя идентификатор. Когда вы регистрируете горячую клавишу, вы используете идентификатор, ключ и модификатор. Когда горячая клавиша нажата, Windows выдает идентификатор горячей клавиши в обратном вызове, а не клавишу и модификаторы.

RegisterHotKey(Handle, id: 1, ModifierKeys.Control, Keys.A);
RegisterHotKey(Handle, id: 2, ModifierKeys.Control | ModifierKeys.Alt, Keys.B);
const int WmHotKey = 786;
if (msg.message != WmHotKey)
    return;

var id = (int)msg.wParam;
if (id == 1) // Ctrl + A
{
}
else if (id == 2) // Ctrl + Alt + B
{
}

Вот сообщение в блоге, которое я написал с кодом для регистрации горячей клавиши для приложения WPF: https://www.meziantou.net/2012/06/28/hotkey- глобальные-ярлыки

5
задан paulthenerd 21 November 2008 в 22:53
поделиться

6 ответов

Мы столкнулись с подобным вопросом, когда мы сначала запустили работу над Контролем, наше решение состояло в том, чтобы кодировать целое приложение в Python, с помощью PyObjC. Контроль 1 имел sqlite бэкенд, Контроль 2 имеет бэкенд пост-ГРЭС.

Существует несколько действительно сформировавшихся и мощных ORMs на стороне Pyton, такие как SQLObject, который довольно прост работать с (мы использовали его для Контроля 1.0), и SQLAlchemy, который более мощен, но немного более тверд перенести Ваш мозг (мы использовали его для Контроля 2.0).

Один подход, который Вы могли оценить, создает приложение в Objective C, но пишет модели данных и базе данных код connectivity/adminstration в Python. Можно использовать PyObjC для создания сменного пакета из этого кода, который Вы затем загружаете в свое приложение , Это - более или менее подход, который мы проявили для Сервера Контроля, который использует инструмент командной строки Основы для администрирования сервера пост-ГРЭС и баз данных в нем, этот инструмент CLI в свою очередь загружается в пакете плагина Python, который имеет весь фактический код базы данных в нем. Конечные пользователи главным образом взаимодействуют с базой данных через область System Preferences, которая не имеет никакой подсказки, на что база данных похожа, но вместо этого использует инструмент командной строки для взаимодействия с нею.

Загрузка плагина проста:

NSBundle *pluginBundle = [NSBundle bundleWithPath:pluginPath];
[pluginBundle load];

Необходимо будет, вероятно, создать.h файлы для классов в пакете, к которому Вы хотите иметь доступ из Вашего кода Obj-C.

5
ответ дан 13 December 2019 в 05:44
поделиться

Вы могли бы также хотеть проверить платформу BaseTen. Это - Базовая подобная Данным платформа (на самом деле, это может импортировать Базовые Модели данных), но работы с PostgreSQL (хотя не MySQL, насколько я знаю). Это включает некоторые очень хорошие функции, такие как исследование схемы во время выполнения. Это также включает подкласс NSArrayController, который автоматически обрабатывает блокировку и синхронизацию через многочисленных пользователей, таким образом, можно продолжить использовать Apples Key-value Binding в UI.

3
ответ дан 13 December 2019 в 05:44
поделиться

У меня есть личный опыт решения этой конкретной проблемы. Я даже начал писать свою собственную оболочку для C MySQL API.

Окончательный вывод был следующим: не надо

Решение, которое работало в моем случае, состояло в том, чтобы связаться с сервером MySQL через PHP. Если вы знакомы с веб-сервисами, скорее всего, вы знаете о PHP, поэтому я не буду вдаваться в подробности этого.

Для чтения из базы данных:

  1. Приложение Cocoa отправляет запрос для URL на сервере: http://theserver.com/app/get_values.php
  2. The сценарий get_values.php обрабатывает запрос к базе данных и возвращает данные в формате xml
  3. Приложение какао загружает и анализирует xml

Для записи в базу данных:

  1. Приложение какао отправляет на сервер более сложный запрос: http://theserver.com/app/put_values. php? name = "john doe" & age = 21 & address = ...
  2. Сценарий put_values.php анализирует ввод и записывает в базу данных

Прелесть этого решения в том, что PHP отлично подходит для работы с MySQL, и у cocoa есть несколько удобных встроенных классов для работы с данными XML.

edit: еще одна вещь:

Одна из ключевых вещей, которую вы должны выяснить с помощью этого подхода, - это сколько обработки должно быть выполнено сервер, и сколько должно быть сделано в самом приложении. Позвольте какао делать то, что хорошо у какао, и пусть PHP и MySQL делают то, что у них хорошо получается.

Вы могли бы написать общий PHP-скрипт для обработки всех запросов: execute_query.php? querystring = "SELECT * FROM .....", но это вряд ли является оптимальным решением. Ваша лучшая ставка - несколько небольших PHP-скриптов, которые обрабатывают отдельные наборы данных для вас.

2
ответ дан 13 December 2019 в 05:44
поделиться

GDL2 - хороший пример, основанный на EOF.

1
ответ дан 13 December 2019 в 05:44
поделиться

Я также реализовал платформу персистентности простого объекта на основе sqlite, но это, конечно, не было тривиально, чтобы сделать. Я соглашаюсь с заключением eJame - не реализуют тот самостоятельно, если Вы не имеете к.

Если бы Вы не стремитесь программировать в Objective C, Вы могли бы хотеть смотреть на PyObjC, который позволил бы Вам программировать часть базы данных в Python. Можно использовать модуль MySQLdb для доступа DB и существует много учебных руководств онлайн для его использования. Не трудно наполнить данные назад в классы Cocoa/CF и пасовать назад их к Вашему приложению.

Основной протест с PyObjC состоит в том, что в данный момент он не работает с Tiger.

0
ответ дан 13 December 2019 в 05:44
поделиться

Вместо того, чтобы изобрести велосипед путем записи собственной коммуникационной обертки для контакта с MySQL от Какао Вы могли попробовать платформу SMySQL (иначе. MCPKit), это была часть приложения CocoaMySQL, которое развило в Продолжение Pro проект. Это работает с переменными версиями MySQL и, кажется, довольно устойчиво.

Если необходимо понять, как включить его в приложение, вокруг нет большого количества документации, но это имеет легкое для понимания интерфейса, и Вы видите, что он работает путем рассмотрения источника Продолжения Pro, которое загружаемо из кода Google.

Существует также ветвление CocoaMySQL-SBG проекта CocoaMySQL, но это, кажется, устарело, и я не мог заставить это создавать правильно.

1
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: