Testing Vapor Apps with CircleCI

I’ve recently been working on a web app written in Swift. I chose the Vapor framework to accomplish this. When I reached continuous integration, I couldn’t really find much written on the topic. We prefer to use CircleCI, and I’ve set up a few iOS apps on Circle, so I gave it a shot and came up with the following circle.yml that works really well.

Read More

Clean Swift Implemented in iOS and Android

I recently came across Real Swift, a framework for Swift implementing Uncle Bob’s Clean Architecture. I quickly fell in love with the ideals it encapsulated. Of course I had grown frustrated with Apple’s approach at MVC. Apple’s documentation suggests you follow an MVC pattern, but iOS’s main component is called UIViewController… Just from the name alone, we’ve already encroached on the idea of MVC!

Read More

Don't mix Crashlytics and New Relic

We recently ran into an issue involving a very difficult crash. The issue was that the crash would only occur when the app had been archived and distributed. When we ran the app from Xcode to try to trace it, it would never occur.

Read More

SourceKitService Crashed

Xcode occasionally starts crashing on me and it won’t stop. Usually this is triggered by Xcode trying to actively compile my code while I’m typing. This crash triggers a cycle where it happens over and over and over. I get the message “SourceKitService Crashed Crashlog generated in ~/Library/Logs/DiagnosticReports Editor functionality temporarily limited.” as picture below.

Read More

User Defaults in Swift and iOS 8

I like to use a UserDefaultsManager class to handle all of the values I store in NSUserDefaults. Using computed properties in Swift makes it even easier to do. You can even make class level computed properties so that you don’t need to bother with a Singleton or creating an instance of your UserDefaultsManager.

Read More

Dynamically resizing labels in Swift

One thing that iOS does poorly is allowing dynamic layouts when it comes to text. When you create a label that can have variable length it’s difficult to set layout constraints to allow that label to grow and shrink as needed. This is going to become an even bigger issue with the release of the iPhone 6. Screens will become wider so you can’t count on a constant width anymore.

Read More