Data Sync Series — Part 5

Ryan Grier
2 min readOct 27, 2017

This is the fifth blog post in my new blog series on data syncing in an app. Links to all of the posts in the series are at the bottom of this post.

App Update

I’ve pushed up a new revision of ListsApp to GitHub. In this revision, I’ve replaced the in-memory version of the persistence layer with a version that uses Realm.

The app itself hasn’t changed at all. The only thing in the app that has changed is the persistence layer.

I thought about using CocoaPods to do the Realm integration. I’ve used CocoaPods for the last few years. Instead, I went with Carthage. I wanted to try something new and see how Carthage works. So far I am happy with it. The framework compile times are long, but you only do it once per version, which is nice.

One thing of note with my use of Carthage. I only committed the Cartfile and Cartfile.resolved. I did not include the Carthage/Checkouts or Carthage/Build. I’m not quite sure of what the best practice is there. I just decided to go this way. If this is the wrong way of handling the Carthage files, please let me know.

What’s Next?

Ok. Now comes the fun part. It’s time to (finally) start integrating with CloudKit. Finally, I know!

This has kind of been the entire point of this exercise and I’m finally getting to it. This is also the point in my previous data syncing encounters where I decided to work on something else. I really need to power through this. It’ll probably take me longer than I want, but I want to make sure I get it done.


I know I said I would try to speed things up, I’m trying. It’s tough. We have a lot going on.

This update has actually been done for a little while. I have been sitting on it while I decide what I do with my site. The code has been sitting on a branch for over two weeks. I just needed to write this post and move on.

Other Posts in the Series

Part 1 | Part 2 | Part 3 | Part 4

Originally published at on October 24, 2017.