2014-01-14 5 views
0

Есть несколько приложений, которые я использую на своем Mac, которые хранят свои данные в основных данных. Я вижу данные, которые я хочу в CoreDataPro. Я хочу, чтобы эти данные - в частности, я хочу отправлять изменения в некоторые удаленные конечные точки (например, Zapier или какой-либо другой сервис REST).Stream coredata для удаленной конечной точки REST

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

Я бы предпочел утилиту, которую я мог бы настроить вместо того, чтобы закодировать приложение Mac.

Я заметил, http://nshipster.com/core-data-libraries-and-utilities/ - RestKit все еще казался самым способным, но в https://github.com/RestKit/RestKit/issues/1748 мне посоветовали, что CoreData проекты должны быть открыты только с помощью одного приложения в то время, и действительно RestKit предназначена для выпечки в приложение источника (вместо для очистки и отправки базы данных).

Какой подход вы бы взяли?

Я также отметил: http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1

Спасибо, Мартин.

ответ

1

Во-первых, Core Data - это хранилище объектов в памяти. То, что записано на диск из Core Data, может быть в одном из нескольких форматов. Одним из таких форматов является SQLite. Если приложение пишет SQLite, тогда можно пробовать тот же файл и выталкивать его в другое место.

Однако каждое приложение будет иметь свою собственную структуру данных, поэтому вам нужно быть гибким в структуре, которую вы обрабатываете.

RestKit не имеет значения в этой ситуации, поскольку вы просто переводите объекты в JSON и нажимаете их на сервер. Встроенные фреймворки делают это просто отлично.

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

Если бы я собирался сделать что-то подобное, я бы написал его, используя Core Data самостоятельно, чтобы опросить модель из приложения, которое вначале написало данные, а затем перевести базу данных в JSON и нажать на нее. Вы не сможете сказать, что нового против старого, поэтому серверу нужно будет разобраться с этим.

Другой вариант, так как вы не можете различить в любом случае, это просто нажать файл sqlite на сервер и позволить серверу проанализировать его.

+0

Ах, спасибо за ясность re: persistence и ваши другие вопросы о RestKit. Также ваш вопрос о том, чтобы подталкивать базу данных SQLite, дал мне несколько других идей! (который я опубликовал как потенциальные ответы ниже) –

0

Мне интересно, хороший ли ответ (где хороший исключает Objective-C и включает языки, которые я знаю, например - в ограниченной степени - Ruby) - использовать MacRuby и его библиотеки Core Data.

Основные данные, по-видимому, могут быть выставлены как активная запись. https://www.google.com/search?q=macruby+coredata, в частности http://www.spacevatican.org/2012/1/26/seeding-coredata-databases-with-ruby/

Однако MacRuby, кажется, померк - https://github.com/MacRuby/MacRuby/issues/231 - он даже не будет компилироваться на Mavericks.

0

Другие ответы могут включать в себя:

  • использование промежуточного программного платформы например используя rssbus.com (только). Соединения sqlite могут отправлять события
  • , так как моя целевая система (http://easy-insight.com) на самом деле имеет передатчик, который отправляет новые записи, которые он видит из MySQL abd PostgreSQL, я мог бы https://dba.stackexchange.com/questions/2510/tools-to-migrate-from-sqlite-to-postgresql или использовать ETL, например http://www.easyfrom.net (я сделал спросите поставщика о поддержке SQLite давным-давно, но SQLite для них просто не является приоритетом).