nothirst / TICoreDataSync

Automatic synchronization for Core Data apps, between any combination of Mac OS X and iOS: Mac to iPhone to iPad to iPod touch and back again.
https://github.com/nothirst/TICoreDataSync/wiki
807 stars 61 forks source link

TICoreDataSync behavior and functionality related questions #5

Closed ghulammustafa closed 11 years ago

ghulammustafa commented 12 years ago

These are not issues, but rather questions. I wasn't sure where to post these. I'd appreciate if you can find sometime to address these. Thanking in anticipation.

Thanks.

MrRooni commented 12 years ago

No worries, I'll take them one by one:

No, iCloud does not deprecate TICDS. iCloud has its strengths in certain types of sync, but has shown to struggle with Core Data syncing. For more on the ins and outs of Core Data over iCloud I suggest looking through Drew's blog here: http://mentalfaculty.tumblr.com

Ancillary to those posts, Drew was recently successful in implementing TICDS using iCloud as the storage medium, showing that the two are not mutually exclusive.

The short answer is, "no, not fully", but there is a long answer. TICDS supports model versioning and data up to a point. That is, if the changes to the model are minimal enough TICDS will continue to sync two different model versions. For instance, if you are syncing entities called 'A' with attributes 'one' and 'two' and then you augment your data model down the road by adding attributes 'three' and 'four' you can continue to sync change to A.one and A.two across different model versions. However, if you attempt to sync changes to A.three with an instance of the old data model the app will most likely crash because that key doesn't exist.

It does. Once you have a registered TICDSApplicationSyncManager you can tell it to removeAllSyncDataFromRemote.

Yes, there are delegate callbacks to notify you that the data on the server has been wiped by another client or if the data is in a state that the framework cannot understand.

I haven't tried any syncing with ordered relationships, but given the quick look at the documentation it would appear that we might need to add some support to the framework to get it to work with ordered relationships. I'd love to see a test app using ordered relationships to verify this though.

No, TICDS does not currently support externally stored data.

If the application is removed from the device and reinstalled TICDS will set it up as a new device with new unique ID.

We've had some issues with undo/redo and their changes not being picked up by TICDS. There is also a known issue that if the user attempts to sync a large number of change sets at one time TICDS will run out of memory and the app will crash.

TICDS is currently shipping with MoneyWell for Mac and MoneyWell for iPhone. (http://nothirst.com/moneywell/ and http://nothirst.com/moneywell/iphone)

Hope this helps!

ghulammustafa commented 12 years ago

Thank you for taking the time to address these questions. I really appreciate it.

I did check Drew's blog as well as other resources (including Aleksey Novicov's iCloud Store Manager class). Drew's blog is a great resource. It was nice to learn that he successfully implemented TICDS with iCloud. I would love to see the support for iCloud in TICDS (or a Tutorial on How To do it).

I just have a few related questions:

Best Regards, Mustafa

MrRooni commented 12 years ago

Mustafa,

We have a long term goal to allow syncing external dependencies since MoneyWell currently allows a user to attach a receipt image to their transactions. That image file is not stored in our database, just a reference to it. We don't, however, have a timeline for adding this feature to the framework. If someone in the community were to add it themselves and then submit a pull request I'd be more than happy to incorporate it into the framework. (wink wink, nudge nudge)

Cheers, Michael