Image for post
Image for post

Yusuf is an iOS developer who has just started his career in iOS development. He starts building apps with MVC as Apple suggests. After a while, he wishes to go deeply through the development. According to his researches, other developers use MVVM with various architecture extensions. While some of them prefer MVVM + Protocol, others want to use Closure or Reactive Programming with MVVM. Let’s help Yusuf to find out what kinds of differences exist in these approaches in a project.

What is MVVM?

It’s the architecture that simply brings View Model over MVC. The idea behind it that moving logical conditions into…


If you don’t like authentication steps like me, this story is for you!

Image for post
Image for post

Once you install an app you always open it with an ambition that comes with the question, What is there inside the app?. As soon as the app launches you lost your all enthusiasm that’s because of a MOTHERF*CKER login screen.

Besides of I am an iOS developer, also as a user, I really hate login screens. I must not give an email, mobile phone, nickname, password without seeing the inside of the app.

TL;DR

You can use the Keychain via a keychain manager class to store a unique identifier for each user. That provides you to not ask for any…


Image for post
Image for post

As developers, we build apps for two main points, to make users happy and to earn money. These are related to each other. If users are happy, we earn money, but earning money is not equal to make users happy. So, the main thing we have to focus on is making users happy, and then money will come eventually.

There are plenty of ways to make users happy, and I am not going to tell their in this article. I am focusing on how we can be aware of it. I think the first data we should look at it…


Image for post
Image for post

Problem

Calling multiple functions in a sequence is complicated.

Solution

We have to build a chain in which its items communicate asynchronously. We can able to add new items to any position of the chain. PromiseKit is a tool which helps us to build the chain, in a structure.


Image for post
Image for post

Problem

Struggling in the network layer when sending requests and parsing responses.

Solution

Applying generic, modular network layer. The solution includes Generic Type, Completion, Singleton, Codable, URLSession and OOP(Object Oriented Programming) terms.

According to most of the mobile developers, the number one subject or layer or structure in mobile development is Network Layer. A lot of mobile applications work online then the Network Layer is the hearth of them. The point is, how can we build a strong network layer against even for complex applications? Let’s find the answer!

What are we going to do?

We are going to build a service manager, request and response classes, a…


Image for post
Image for post

Problem

Wasting time when running tests.

Solution

Automating tests with Fastlane. It sends test results to a Slack channel to monitorize.

Every developer wishes to write bug-free code. They analyze cases, think about edge cases, write tests, etc. The part that we are interested in on all of these is test.

Fastlane

Fastlane is an open-source platform aimed at simplifying Android and iOS deployment. Fastlane lets you automate every aspect of your development and release workflow.(source: https://fastlane.tools)

Fastlane is a quite useful tool for mobile developers. It handles running tests, uploading screenshots, signing code, distributing via Testflight, even publishing to the App Store.


Hello from the other side! If you have not read the first story, here is the link.

As we remember, we separated schemes as debug, test and release. We did set the app name by the scheme. What can we do more?

What About Bundle ID?

Sometimes, we need to separate the app because we would like to watch analytics by released or tested apps. Dividing the app helps us to diagnose what we are looking for.

Image for post
Image for post

Run the app with three different schemes and you see 3 different apps.

App Icon, Your Turn!

We have created 3 different app icons. …


I, as an iOS developer, face some situations like someone comes to me and says, “Hey, the app crashes, look at that” Assume that I have two versions installed from testflight or app store. I ask, “Which version is it?” and the answer might be “I don’t remember” I wanted to solve this problem without asking any question to the person who comes to me. Also, I wanted to add some controls where the app installed like testflight, app store or via Xcode. I wished to separate the versions with configuration. The answer is schemes.

When creating a new project…


Image for post
Image for post

Bir önceki yazıda VIPER’a ufaktan bir giriş yapmıştık. Önceki yazıya burdan ulaşabilirsiniz. Eğer VIPER’ı ilk defa duyuyorsanız lütfen önceki yazıdan başlayın.

Bu yazıda VIPER katmanlarını oluşturup her birinin detaylı açıklamasını yapacağım. Daha sonra ufak bir örnekle mimariyi daha rahat anlayacağız. Daha kolay anlaşılabilmesi için adım adım gideceğim. Bu yüzden lütfen atlamadan okumaya özen gösterin.

Basit bir rehber uygulaması yapacağız. Ana sayfada bütün kişiler olacak. Herhangi bir kişiye tıklandığında onun detayına gideceğiz. Ana sayfamız için VIPER mimarisini kurduğumuzda sınıflarımız şu şekilde olacaktır. (Ana sayfa adı olarak “Home”u kullandım)


Image for post
Image for post

Merhaba, bu yazıda her iOS geliştirenin bilmesi gereken bir mimari olan VIPER mimarisini dilim döndüğünce anlatmaya çalışacağım. Yazının hedef kitlesi şu şekildedir; ortamlarda VIPER’ı duymuş ama ne işe yarar tam emin olamayan, VIPER ile ufak tefek 1–2 proje yapmış ama mantığını tam olarak anlayamamış ve ya anladığını pekiştirmek isteyen kişilerdir.

Geliştirdiğimiz her projeyi belirli bir mimari üzerine kurarız. Seçeceğimiz mimarinin kolay entegre edilebilir ve ek geliştirmelere uyumlu olmasını isteriz. Aynı zamanda kodumuzun okunabilir olmasını ve arkadaşlarımıza gösterdiğimizde havalı bulmalarını bekleriz. Kısaca biz yazılımcılar bi mimariden çok şey bekleriz.

Yusuf Demirci

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store