Топ-10 iOS Swift библиотек, о которых должен знать каждый iOS разработчик

Swift набирает популярность с каждым днем, большинство новых проектов написаны именно на Swift. Web Academy предлагает Вам 10 библиотек, которые позволят сэкономить время на написание компонентов для Вашего приложения.

библиотеки iOS Swift

1. Alamofire

Если Вы хотите упростить сети в Вашем приложении, Alamofire – идеальный вариант. Alamofire – библиотека HTTP-сетей, построенная на NSURLSession и Foundation URL Loading System. Она заворачивает сетевые механизмы в элегантный и простой Swift интерфейс.

// Making a GET request

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
         .responseJSON { response in
             print(response.request)  // original URL request
             print(response.response) // URL response
             print(response.data)     // server data
             print(response.result)   // result of response serialization

             if let JSON = response.result.value {
                 print("JSON: \(JSON)")
             }
         }

2. SwiftyJSON

Типы Explicit в Swift помогают нам убедиться, что мы не сделали в коде ошибку, способную привести к появлению багов. Но иногда разобраться с ними достаточно сложно, особенно при работе с JSON. SwiftyJSON помогает справиться с JSON-данными в Swift. Unwrapping также происходит автоматически.

// Typical JSON handling

if let statusesArray = try? NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [[String: AnyObject]],
    let user = statusesArray[0]["user"] as? [String: AnyObject],
    let username = user["name"] as? String {
    // Finally we got the username
}

// With SwiftyJSON

let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
  //Now you got your value
}

SwiftyJSON хорошо работает с Alamofire.

Alamofire.request(.GET, url).validate().responseJSON { response in
    switch response.result {
    case .Success:
        if let value = response.result.value {
          let json = JSON(value)
          print("JSON: \(json)")
        }
    case .Failure(let error):
        print(error)
    }
}

3. ObjectMapper

Если Вы когда-либо писали приложение, скачивающее информацию через API, Вы скорее всего потратили много времени на написание кода ответа для Ваших объектов. ObjectMapper помогает Вам конвертировать JSON-ответ в модель Вашего объекта и наоборот. Другими словами, он помогает Вам создать путь JSON к объекту и объекта обратно к JSON. Вложенные объекты также поддерживаются.

// Temperature class that conforms to Mappable protocol

struct Temperature: Mappable {
    var celsius: Double?
    var fahrenheit: Double?

    init?(_ map: Map) {

    }

    mutating func mapping(map: Map) {
        celsius      map["celsius"]
        fahrenheit   map["fahrenheit"]
    }
}

Стоит также упомянуть AlamofireObjectMapper, расширение Alamofire, конвертирующее данные JSON ответа в объекты Swift при использовании ObjectMapper.

4. Quick

Quick – BDD фреймворк для Swift, созданный по примеру RSpecSpecta, и Ginkgo. Quick работает с Nimble, matcher-фреймворком для Ваших тестов.

 

// Documentation directory spec

class TableOfContentsSpec: QuickSpec {
  override func spec() {
    describe("the 'Documentation' directory") {
      it("has everything you need to get started") {
        let sections = Directory("Documentation").sections
        expect(sections).to(contain("Organized Tests with Quick Examples and Example Groups"))
        expect(sections).to(contain("Installing Quick"))
      }

      context("if it doesn't have what you're looking for") {
        it("needs to be updated") {
          let you = You(awesome: true)
          expect{you.submittedAnIssue}.toEventually(beTruthy())
        }
      }
    }
  }
}

5. Eureka

Eureka позволяет легко написать динамические табличные формы. Она состоит из рядов, секций и форм. Если Ваше приложение содержит много форм, Eureka поможет Вам сильно сэкономить время.

// Creating a form

class CustomCellsController : FormViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        form +++ Section("Custom cells")
                     WeekDayRow(){
                        $0.value = [.Monday, .Wednesday, .Friday]
                    }
                     TextFloatLabelRow() {
                        $0.title = "Float Label ow, type something to see.."
                    }
    }
}

6. RxSwift

RxSwift – Swift фреймворк для FRP (Functional reactive programming). RxSwift – Swift-версия Rx, ее цель – легко скомпоновать асинхронные операции и потоки событий или данных. Наблюдение KVO, асинхронные операции и делегаты соединены в абстракции последовательности, что делает RxSwift мощным фреймворком. Если Вы когда-то работали с ReactiveCocoa, концепт будет Вам знаком.

// Combine first and last name sequences, and bind the resulting string to label

combineLatest(firstName.rx_text, lastName.rx_text) { $0 + " " + $1 }
            .map { "Greeting \($0)" }
            .bindTo(greetingLabel.rx_text)

7.SnapKit

SnapKit – также библиотека с автоматической компоновкой. Она упрощает написание автокомпоновки с минимальным количеством кода без потери читабельности. Дизайн библиотеки помогает Вам избежать ошибок при программировании пользовательского интерфейса.

// Resizing and centering subview in its superview

let box = UIView()
let container = UIView()

container.addSubview(box)

box.snp_makeConstraints { (make)  Void in
    make.size.equalTo(50)
    make.center.equalTo(container)
}

8. Spring

Spring – библиотека анимаций, помогает создать анимации как в коде, так и напрямую в Storyboard. Вы можете создавать анимации в Storyboard, используя атрибуты runtime (заданные через свойства IBInspectable). Spring поддерживает большое количество уже написанных анимаций, переходов и свойств.

// Usage with code

layer.animation = "wobble"
layer.animate()

9. Kingfisher

Kingfisher – легкая библиотека для скачивания и кеширования картинок из сети. Скачивание и кеширование происходит асинхронно. Скачанные изображение кешируются в памяти и на диске, это может значительно улучшить работу Вашего приложения.

// Basic example of downloading and caching an image

imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!)

10. CoreStore

CoreStore – wrapper библиотека для Core Data. Ее цель обеспечить сохранность типов и изящество Swift при взаимодействии с Core Data. CoreStore API обеспечивает эффективное взаимодействие всех общих методов и базы данных.

// Storing a person entity

CoreStore.beginAsynchronous { (transaction)  Void in
    let person = transaction.create(Into(MyPersonEntity))
    person.name = "John Smith"
    person.age = 42

    transaction.commit { (result)  Void in
        switch result {
            case .Success(let hasChanges): print("success!")
            case .Failure(let error): print(error)
        }
    }
}

Контакты

Киев, В. Гетьмана 1A

info [@] web-academy.com.ua

+ 38 (044) 233-15-22

+ 38 (068) 233-15-22

Заявка на курсы

Введите Ваше имя
Введите Ваш E-mail
Введите Ваш телефон

Выберите курс