Вы можете решить эту проблему несколькими способами, но я бы рассмотрел один из этих двух:
Возьмите свойства подкласса NSManagedObject
, преобразуйте их в NSData
и используйте AsyncSocket для их передачи. Затем, когда принимающее приложение получило все свойства, оно воссоздает объект в своей собственной базе данных.
Перенесите всю базу данных сразу. Не нужно ничего воссоздавать.
Преимущество первого варианта состоит в том, что он отправляет только то, что ему нужно. Если у вас есть тысячи объектов, и вы меняете один, вы переносите только этот один объект. С другой стороны, все может стать действительно сложным, если у вас есть несколько отношений на этом одном объекте, так как вам также придется отправлять связанные объекты.
Второй вариант для вас самый простой, но не очень эффективный. Если вы изменяете один объект, вы отправляете всю базу данных. Если размер вашей базы данных составляет несколько мегабайт, это может занять некоторое время, и вы делаете это каждый раз, когда вносите изменения.
В идеале вы делаете это так, как это делает iCloud. Толкайте / вытягивайте только то, что изменилось. Я не знаю, как это определяет iCloud, но держу пари, что это не что-то тривиальное. Какой из методов лучше всего подойдет вам, зависит от размера вашей базы данных и от того, как часто изменяются объекты. Метод 2 лучше всего подходит для большой сложной базы данных с небольшими изменениями, метод 1 - если ваша база данных относительно проста (нет или мало связей) и претерпевает много изменений.
person
Scott Berrevoets
schedule
02.02.2013