awesome-ios-developer/README.md
2021-05-03 01:57:35 -05:00

8.1 KiB
Raw Blame History

Useful Swift Things

Content

Coding convention

set of guidelines for a specific programming language that recommend programming style

Swift Style Guide

Swift Lint

The way of force you to adapt coding convention

otherwise project build will FAILED

if which swiftlint >/dev/null; then
  swiftlint
else
  echo "error: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
  exit 1
  fi

put .yml file into root folder and apply following code in Build Phases

You can modify(delete) SwiftLint Option with opening .yml file

Shift + Command + . will show the hidden file

Design Pattern

Design pattern is

Check this website for design pattern in Swift

Delegate Pattern

weak var delegate: SomeProtocol?

Singleton Pattern

class SingletonPattern {
    static let manager = SingletonPattern()
    
    private init() {}
}

Observer Pattern

Code Structuring

MVC

MVVM

MVC vs MVVM

M -> Model Which holds the application data

V > View It displays the data that is stored in model. These are visual elements through which a user interacts. These are subclasses of UIView

VM > View Model Transform model information/data and it interacts with controller or view to display those informations.

C > Controller class It will be there but the responsibility of view business logic has been removed and give to view model

VIPER

UIDesign

HIG(Human Interface Guidelines)

iOS icon

  • icon8 you can download icons for your APP

UIdesign inspiration

Helper

All files are resuable files and protocol oriented. Just Copy and Paste inside your project and use it!! 👍

Email, Message, Call

You can check the file in the follow link

Usage

import MesaageUI first

import MessageUI

Then use it

    lazy var manager = ConversationManager(presentingController: self, mailDelegate: self, messageDelegate: self )
    
    func sendEmail() -> MFMailComposeViewController {
        manager.sendEmail(feedback: MailFeedback(recipients: ["abcd@example.com"], subject: "Sample", body: "Write body"))
    }
    
    func sendMessage() -> MFMessageComposeViewController {
        manager.sendMessage(feedback: MessageFeedBack(recipients: ["1111111111"], body: "Type here"))
    }
    
    func call() {
        manager.makeCall(number: "1111111111")
    }

Network Layer

API

API(Application Programming Interface) is an interface that defines interactions between multiple software applications or mixed hardware-software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc.

JSON

JSON is a language-independent data format

Which is relative with KEY - VALUE pair

{
    "main": [
        {
            "title": "example1",
            "body": "body1"
        },
        {
            "title": "example2",
            "body: "body2"
        }
    ]
}

JSON parser extension for Chrome

This extension makes JSON more structable JSON parser pro FREE 👍

JSON Decoding

To use JSON Decoding in swift, you have to define the model to be Codable or Decodable

public typealias Codable = Decodable & Encodable

Decodable can only decode the json data. Can't encoded json file!!

struct User: Codable {
    var first_name: String
    var last_name: String
    var country: String
}

JSONSerialization

Various API Site

GCD

GCD(Grand Central Dispatch) is a low-level API for managing concurrent operations. It can help you improve your apps responsiveness by deferring computationally expensive tasks to the background.

DispatchQueue

An object that manages the execution of tasks serially or concurrently on your app's main thread or on a background thread.

main

We can say main is a serial queue

global()

We can say global is a concurrent queue

DispatchGroup

DispatchWorkItem

Thread Sanitizer

Thread Sanitizer is a tool to identifies the potential thread-related corruption issues. And it is a good way to find the Readers and Writers problem in your application.

How to Use Address Sanitizer

Go to this Option and Click EDIT SCHEME... 👈

And then go to RUN and check THREAD SANITIZER 👈

Third Party Library

This github contains all the popular libraries in Swift👍

Useful Stuff

Show Preview in UIKit(Build UI with Code Base) 👍 👍 👍 👍 👍

Copy this code and Paste into your controller

import SwiftUI

struct ViewControllerRepresentable: UIViewControllerRepresentable {
    typealias UIViewControllerType = ViewController

    func makeUIViewController(context: Context) -> ViewController {
        return ViewController()
    }

    func updateUIViewController(_ uiViewController: ViewController, context: Context) { 
    }
}

@available(iOS 13.0.0, *)
struct ViewPreview: PreviewProvider {
    static var previews: some View {
        ViewControllerRepresentable()
    }
}

Enable canvas option like this

You are GOOD TO GO 👏👏👏

Write README.md

This will help you to write a README.md file more dynamically 👍

Author

This README.md file is written by Jungpyo Hong (Dennis)