All posts by Luka Gabric

iOS copypng failed with exit code 1

There are usually two common reasons when you have missing files in the project after a merge.

The first case is when the commit contains references of files only, but not the files themselves. That means a developer adds e.g. images to the project and commits the project file, but forgets to commit the actual image files. When you merge those changes, you get those familiar red file names that clearly state missing files. You need to get a hold of the actual files and add them to resolve the issue.

Continue reading iOS copypng failed with exit code 1

Swift Value vs Reference types

value-typeSwift is a programming language that strongly emphasizes value types. Structs and Enums are first class citizens in Swift. While value types do not support inheritance, they contain properties, methods and extensions, features usually related to classes.

Value types usually don’t manipulate the data they store.¬†It is the owner of that value type that manipulates the data stored in¬†the value. The value type itself can contain interface and convenience methods for computation and calculations using the stored data. This results in a clean and predictable control flow.

Continue reading Swift Value vs Reference types

iOS Facebook Deep Linking

facebook_iconDeep links are used to take users directly to the content they are interested in inside¬†your application. In Facebook Ads you’re showing specific content that users are interested in which leads to app install. Using deep links you can take the users straight to that content upon installation. Without deep links users are left on the home screen once they run the application and they have to search for that specific content themselves.

Continue reading iOS Facebook Deep Linking

iOS Core Data – batch delete duplicates

batch-deleteBatch deletes are fast and efficient for deleting Core Data entities when using an SQLite persistent store. They provide far better performance than deleting specific NSManagedObjects because batch delete operations are performed in the persistent store (at SQL level). Since the changes are reflected in the persistent store, they are not reflected on objects that are currently in memory.

Continue reading iOS Core Data – batch delete duplicates

RxSwift vs ReactiveCocoa

rxswiftWhen I started looking into FRP (Functional Reactive Programming) on iOS, ReactiveCocoa was pretty much the only way to go. Today there are quite a few FRP frameworks available, with ReactiveCocoa and RxSwift as the two most popular. ReactiveCocoa has been out there for a while and at the moment it is obviously more popular, but RxSwift is catching up fast. Both frameworks are extremely powerful and you can’t go wrong with either, but my vote goes to RxSwift for a few reasons.

Continue reading RxSwift vs ReactiveCocoa

iOS Deeplinking – Universal Links and Associated Domains

deeplinkin-universal-linksiOS Universal Links are a great way of handling your regular website URLs directly in your application without a need to open it in Safari. The users get a seamless experience of navigating straight to the content in the app. If the application is not installed, the system will fallback to opening the URL in Safari. Custom URL Schemes have been used for communication between the apps, but the problem is that other applications can claim the same URL scheme. Universal links solve that problem.

Continue reading iOS Deeplinking – Universal Links and Associated Domains

Xcode 7 Symbolicate iOS Crash Report

crash_thumbIf Xcode cannot symbolicate the crash report automatically, you can¬†use “Symbolicatecrash” tool to symbolicate the report¬†manually. There are three files you’re going to need for this to succeed. The .app file (or if you have an ipa file just rename it to zip and uncompress, you’ll find the app file in that package), the .dSYM file and the .crash report.

Continue reading Xcode 7 Symbolicate iOS Crash Report

iOS Audio Player with Lock Screen Controls

audio_player_thumbPrior to iOS 7.1¬†the UIApplication’s¬†beginReceivingRemoteControlEvents method needed to be called and¬†remoteControlReceivedWithEvent implemented where you’d handle remote control events by the event type that is received. In¬†iOS 7.1 MPRemoteCommandCenter is introduced. With command center it is much more convenient to handle the remote control events.

Continue reading iOS Audio Player with Lock Screen Controls

ESP8266 Relay Smart Socket with iOS App Remote Control

es8266-thumbESP8266 is a family of inexpensive full TCP/IP stack Wi-Fi chips and microcontrollers that can be programmed using Arduino IDE. It can work as a standalone microcontroller or interfaced with an Arduino microcontroller via AT commands. I decided to try it out by itself on a simple relay project with an ESP-01 module. The program is a simple web server that can be used by a client to turn a power socket on and off using a 5V relay module.

Continue reading ESP8266 Relay Smart Socket with iOS App Remote Control