• (044) показать233-15-22
  • (068) показать233-15-22
  • Топ-10 iOS Swift библиотек, о которых должен знать каждый iOS разработчик

    Swift набирает популярность с каждым днем, большинство новых проектов написаны именно на Swift. Мы предлагаем Вам 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, созданный по примеру RSpec, Specta, и 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)
            }
        }
    }

    Статьи

    • Все
    • инструкции
    • инфографика
    • топ программ
    Показать больше удерживайте SHIFT Ззагрузить все