Chace was with us for a few weeks as an intern iOS developer. During his time with us, he was tasked with coming up with iPhone and Apple Watch solutions for our popular Wedding Planner app, currently available for the iPad. Chace will explain the methods and problems he encountered along the way…

Apple Watch Solution

My initial aim was to understand the functions and requirements needed in order to create a cut down version of the Wedding Planner app available on watchOS. Using Swift, I decided to create a countdown that would give the user a live display of how long they had left until their big day.


Working with Dwayne as my mentor, one of the main issues that we came across was trying to get the iCloud data of the wedding date to display on the watch. Our solution was to apply the Watchkit Connectivity Framework which allows us to use WCSession to transfer data from one device to another.


import UIKit
import CoreData
import WatchConnectivity

class ViewController: UIViewController, WCSessionDelegate {
    @IBOutlet weak var lblNames: UILabel!
    var session = WCSession.defaultSession()   func sessionsesion: WCSession, didReceiveMessage message: [String : AnyObject]) {}


    func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {}


The final outcome surpassed our initial aims, as not only did we get the live display of the wedding countdown to display, we also added a circular progressive bar that animates the data. The user will now be able to have their big day displayed in an aesthetically pleasing style. Unfortunately this static image won’t be able to demonstrate the cool progressive ring animation that takes place once the user loads up the app, but I’m sure you get the idea.

Wedding Planner countdown on the Apple Watch

One step further

After accomplishing my first challenge in style, I wanted to further explore the ways in which I could take advantage of this new platform for the app. The ‘Checklist‘ feature from the iPad version would be the next thing I’d develop where it would be in sync with the prototype iPhone app. This challenge involved an understanding of ‘Groups’ which is similar to how UIStackView works on the iPad or iPhone storyboard.

Wedding Planner checklist on Apple Watch

iPhone Solution

Having finished up the watch app, Toby and Kriss suggested I work on the iPhone app. I previously touched slightly on the iPhone side of things when using it as the body for the watch app. I am serious when I say slightly; the UI had just a label and a button!

I spoke to Ben quite a lot about UI design, and his experience allowed me to get a better understanding of the different things to consider when attempting to design an app’s UI. I began to appreciate the importance of UI design more and more, as well as the complexity that comes with it. So, it took a few weeks for me to finally string the storyboard together.

Wedding Planner for iPhone prototype screens

Wedding Planner for iPhone prototype screens

I then started to integrate the iCloud data into the app using similar methods that were used from the watch app. I focused my last few days of Createful on the ‘To-do list‘ feature where I managed to get the data to be receivable and editable on the iPhone.

import UIKit
import CloudKit

class ToDoViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet weak var tableView: UITableView!
    let cellIdentifier = "toDoListCell"
    var data:Array<ToDoItem> = Array()
    var filteredData = [String]()
    var ToDoItemToSend = ToDoItem()
    var checked: [Bool]!
    var refreshControl = UIRefreshControl()
    var tableViewController = UITableViewController()
    var selectedListIndex: Int!
    override func viewDidLoad() {
        tableView.dataSource = self
        tableView.delegate = self
        self.tableView.setContentOffset(CGPointMake(0, 88), animated: true)

        checked = [Bool](count: data.count, repeatedValue: false)
        tableViewController.refreshControl = self.refreshControl
        self.refreshControl.addTarget(self, action: #selector(ToDoViewController.didRefreshList), forControlEvents: .ValueChanged)
    func reloadData() {
        CoreDataManager.sharedInstance.fetchAllToDoItems { (items, error) in
   = items as Array<ToDoItem>
            dispatch_async(dispatch_get_main_queue(), {
    func didRefreshList() {

With more time, I would continue to making sure that the iPhone was corresponding smoothly with the watch app. I’d also ensure that the rest of the ViewControllers were functioning properly.

Turn back the ‘watch’?

This past 5 weeks has been an incredible experience for an individual that took his first step into the world of digital agency. I learnt a lot during it, from working with WatchKit to CloudKit which has further developed my knowledge in Swift.

But, most importantly, I come away feeling inspired by the different individuals who know how to blend humour, enthusiasm and professionalism together to make it an enjoyable environment to be a part of. That’s what I have taken from here; the feeling of doing something you love and surrounded by those who are like-minded.