Maybaygiare.org

Blog Network

CocoaPods Tutorial for Swift: Getting Started

Update note: Rony Rozen updated this tutorial for Xcode 11 and Swift 5. Joshua Greene kirjoitti alkuperäisen.

CocoaPods on suosittu Swift-ja Objective-C-Kaakaoprojektien riippuvuusvastaava. Sitä käyttävät CocoaPods-sivuston mukaan tuhannet kirjastot ja miljoonat Sovellukset. Mutta mikä on riippuvuusjohtaja ja miksi tarvitset sellaista?

riippuvuushallinnan avulla on helppo lisätä, poistaa, päivittää ja hallita sovelluksesi käyttämiä kolmannen osapuolen riippuvuuksia.

esimerkiksi sen sijaan, että keksisit uudelleen Oman verkostokirjastosi, voit helposti vetää Alamofiren riippuvuushallinnan avulla. Voit määrittää joko tarkan käytettävän version tai joukon hyväksyttäviä versioita.

tämä tarkoittaa, että vaikka Alamofire saa päivityksen muutoksineen, jotka eivät ole taaksepäin yhteensopivia, sovelluksesi voi jatkaa vanhemman version käyttöä, kunnes olet valmis päivittämään sen.

tässä opetusohjelmassa opit käyttämään Cocoapodeja Swiftin kanssa. Tarkemmin sanottuna:

  • asentavat Kotelokoppapodit.
  • työskentele toimivan demosovelluksen kanssa, joka saa sinut ajattelemaan jäätelöä.
  • käytä Cocoapodeja verkostoitumisen lisäämiseen.
  • Opi semanttisesta versioinnista.
  • Lisää toinen kirjasto käyttäen joustavaa versiota.
Huom: Tämä CocoaPods-opetusohjelma vaatii perusosaamista iOS: ään ja nopeaa kehitystä. Jos olet täysin uusi iOS ja/tai Swift, sitten Tutustu joitakin muita kirjoitettuja ja / tai video tutorials tällä sivustolla ennen kuin teet tämän tutorial. Tai sukella kirjaamme, iOS-oppipoika.

Tämä opetusohjelma sisältää myös luokkia, joissa käytetään Ydingrafiikkaa. Vaikka ydingrafiikan tuntemus on hyödyllistä, sitä ei tarvita. Jos haluat lisätietoja, lue Moderni Core grafiikka Swift series.

aloittaminen

Lataa aloitusprojekti klikkaamalla opetusohjelman ylä-tai alareunassa olevaa Download Materials-painiketta.

koko tämän opetusohjelman ajan käytät sovellusta nimeltä Ice Cream Shop, Inc. Voit käyttää CocoaPods lisätä riippuvuuksia app helppo tapa, sijaan kirjallisesti oman.

ennen kuin voit edetä tämän opetusohjelman kanssa, sinun on asennettava Cocoapodit. Onneksi CocoaPods käyttää Rubya, joka toimittaa kaikki macOS X: n versiot versiosta 10.7 lähtien.

avaa pääte ja anna seuraava komento:

sudo gem install cocoapods

Anna pyydettäessä salasanasi. Päätelaitteen ulostulo näyttää erilaisia nouto -, asennus-ja dokumentointiin liittyviä ulostuloja ja päättyy kohtaan ”XX gems installed”.

Huomautus: Sinun täytyy käyttää sudo Koteloapodien asentamiseen, mutta kun se on asennettu, sinun ei tarvitse käyttää sitä uudelleen tässä opetusohjelmassa.

Kirjoita lopuksi tämä komento päätteeseen, jotta asetukset voidaan suorittaa:

pod setup --verbose

Tämä prosessi kestää muutaman minuutin, koska se kloonaa CocoaPods Master Specs-arkiston~/: ksi.cocoapods / tietokoneella.

verbose optio lokeroi prosessin edetessä, jolloin voit katsella prosessia sen sijaan, että näkisit näennäisesti ”jäätyneen” näytön.

Awesome, you ’ re now set up to use CocoaPods!

Ice Cream Shop, Inc.

paras asiakkaasi on Ice Cream Shop, Inc. Jäätelöt ovat niin suosittuja, etteivät ne pysy tiskillä asiakkaiden tilausten perässä. He ovat rekrytoineet sinut luomaan tyylikäs iOS-sovellus, jonka avulla asiakkaat voivat tilata jäätelöä suoraan heidän iPhonet.

olet aloittanut sovelluksen kehittämisen ja se edistyy hyvin. Katso edistymistäsi avaamalla Jäätelökauppa.xcodeproj, sitten Rakentaminen ja käynnissä. Suussa sulava vaniljajäätelötötterö:

Ice Cream Shop, Inc.Aloitussivun's start page

käyttäjän pitäisi pystyä valitsemaan jäätelömaku tältä näytöltä, mutta se ei ole vielä mahdollista. Ensimmäinen askel on toteuttaa tämä toiminto.

avaa Main.storyboard from the Views/Storyboards & Nibs group to see the app ’ s layout. Tässä nopea katsaus sovelluksen ytimeen, Choose Your Flavor-kohtaukseen:

komponentit Choose Your Flavor-kohtaukseen

  • PickFlavorViewController on näkymäohjain tälle kohtaukselle. Se käsittelee käyttäjän vuorovaikutusta ja tarjoaa tiedot keräysnäkymään, joka näyttää eri jäätelömakuja.
  • IceCreamView on kustomoitu näkymä, joka näyttää jäätelötötterön taustatilan perusteella, Flavor.
  • ScoopCell on mukautettu kokoelmanäkymän solu, joka sisältää ScoopView, joka saa värit Flavor mallista.

While every Ice Cream Shop, Inc. sijainti on allekirjoitus makuja yhteistä, jokainen kuljettaa omia paikallisia makuja, liian. Tästä syystä verkkopalvelun on annettava tiedot Flavors.

tämä ei kuitenkaan vielä selitä, miksi käyttäjät eivät voi valita jäätelömakujaan.

Open PickFlavorViewController.the Controllers-ryhmän alta löytyvässä Swiftissä nähdään stubbed-metodi:

private func loadFlavors() { // TO-DO: Implement this}

Aha, ei ole makuja! Sinun täytyy toteuttaa toiminto!

vaikka voisit käyttää URLSession ja kirjoittaa omia verkostoitumistunteja, on helpompi tapa: Käytä Alamofirea!

saatat tuntea kiusausta ladata tämän kirjaston ja vetää lähdekooditiedostot suoraan projektiisi. Se olisi kuitenkin vaikeaa. CocoaPods tarjoaa paljon tyylikkäämmän ja ketterämmän ratkaisun.

ensimmäisen riippuvuuden asentaminen

ensimmäinen askel on sulkea Xcode. Luit sen oikein.

on aika luoda Podfile, jossa määritellään projektisi riippuvuudet.

avaa pääte ja siirry hakemistoon, joka sisältää IceCreamShop-projektisi CD-komennolla:

cd ~/Path/To/Folder/Containing/IceCreamShop

kirjoita seuraava komento:

pod init

tämä luo projektillesi Podfilen.

Kirjoita lopuksi seuraava komento Podfiilin avaamiseksi käyttäen xcodea muokkaamiseen:

open -a Xcode Podfile
Huomautus: Älä käytä Texteditiä Podfiilin muokkaamiseen, koska se korvaa vakiolainaukset graafisesti houkuttelevammilla latomalainauksilla. Tämä voi aiheuttaa Kotelokoppien sekavuutta ja heittovirheitä. Sen sijaan, käytä Xcode tai muu ohjelmointi tekstieditori muokata Podfile.

Oletuspoditiedosto näyttää tältä:

# Uncomment the next line to define a global platform for your project# platform :ios, '9.0'target 'IceCreamShop' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for IceCreamShopend

Delete the # and space before platform, then delete the other lines starting with #.

Podfileesi pitäisi nyt näyttää tältä:

platform :ios, '9.0'target 'IceCreamShop' do use_frameworks!end

Tämä kertoo Cocoapodeille, että projektisi kohteena on iOS 9.0 ja että se käyttää viitekehyksiä staattisten kirjastojen sijaan. Vaikka Swift ja CocoaPods tukevat molemmat staattista linkitystä, Kaikki kirjastot eivät tue. Yksi niistä, joita käytät tässä projektissa ei.

Jos on ohjelmoinut vain Swiftissä, tämä saattaa näyttää hieman oudolta. Podfile on kirjoitettu Rubylla. Sinun ei tarvitse tietää Rubya käyttääksesi Cocoapodeja, mutta sinun pitäisi olla tietoinen siitä, että pienetkin tekstivirheet saavat Cocoapodit heittämään virheitä.

sana kirjastoista

näkee, että termiä kirjasto käytetään usein yleisenä terminä, joka todellisuudessa tarkoittaa kirjastoa tai viitekehystä. Tämä opetusohjelma syyllistyy myös näiden sanojen ohimennen sekoittamiseen.

saatat ihmetellä kirjaston, kehyksen ja kotelokopan eroja. Ei haittaa, jos terminologia on sinusta hieman hämmentävää!

CocoaPod tai lyhyemmin pod on yleisnimitys joko kirjastolle tai kehykselle, joka lisätään projektiin Cocoapodien avulla.

iOS 8 esitteli dynaamisia kehyksiä, joiden avulla voit niputtaa koodin, kuvat ja muut hyödykkeet yhteen. Ennen iOS 8: aa loit Cocoapodit ”fat” staattisina kirjastoina. ”Fat”tarkoittaa, että ne sisälsivät useita koodiohjeita, kuten i386 simulaattorille, armv7 laitteille jne. Swift ei kuitenkaan salli staattisten kirjastojen sisältävän resursseja, kuten kuvia tai varoja.

takaisin ensimmäisen riippuvuutesi asentamiseen

on vihdoin aika lisätä ensimmäinen riippuvuutesi Cocoapodien avulla. Lisää Podfileeseesi seuraava kohta, heti use_frameworks!:

pod 'Alamofire', '4.9.1'

Tämä kertoo Cocoapodeille, että haluat sisällyttää Alamofiren version 4.9.1 projektisi riippuvuudeksi.

Tallenna ja sulje Podfile.

sinun on nyt kerrottava Cocoapodeille, että ne asentavat projektisi riippuvuudet.

kirjoita seuraava komento terminaaliin varmistettuasi, että olet yhä hakemistossa, joka sisältää IceCreamShop-projektin ja Podfilen:

pod install

sinun pitäisi nähdä tuloste näin:

Analyzing dependenciesAdding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`Downloading dependenciesInstalling Alamofire (4.9.1)Generating Pods projectIntegrating client project Please close any current Xcode sessions and use `IceCreamShop.xcworkspace` for this project from now on.Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

avaa projektikansio Finderin avulla ja näet Cocoapodien luoneen uuden Jäätelöshopin.xcworkspace-tiedosto ja Pods-kansio kaikkien projektin riippuvuuksien tallentamiseen.

huomautus: tästä lähtien, kuten komentorivivaroitus mainitsi, sinun on aina avattava projekti .xcworkspace tiedosto eikä .xcodeproj. Muuten, kohtaat rakentaa virheitä.

erinomainen! Olet juuri lisännyt ensimmäisen riippuvuutesi Cocoapodien avulla!

asennettujen palkojen avulla

nyt käytät upouutta riippuvuuttasi, Alamofirea.

Jos Xcode-projekti on auki, sulje se nyt ja avaa IceCreamShop.xcworkspace.

Open PickFlavorViewController.swift ja lisää seuraava aivan nykyisen tuonnin alapuolelle:

import Alamofire

Rakenna ja aja. Et näe mitään muutosta vielä, mutta voit olla varma, että Alamofire on nyt saatavilla.

ensimmäinen kooste Alamofireriippuvuuden integroimisen jälkeen

korvaa loadFlavors() seuraavalla:

 private func loadFlavors() { // 1 Alamofire.request( "https://www.raywenderlich.com/downloads/Flavors.plist", method: .get, encoding: PropertyListEncoding(format: .xml, options: 0)) .responsePropertyList { response in // 2 guard let self = self else { return } // 3 guard response.result.isSuccess, let dictionaryArray = response.result.value as? ] else { return } // 4 self.flavors = self.flavorFactory.flavors(from: dictionaryArray) // 5 self.collectionView.reloadData() self.selectFirstFlavor() } }

Tässä kerrotaan, mitä tässä koodissa tapahtuu:

  1. käytät Alamofirea luodaksesi GET-pyynnön ja lataat jäätelömakuja sisältävän plistin.
  2. vahvan viitesyklin katkaisemiseksi käytetään heikkoa viittausta self vasteen täydennyslohkossa. Kun lohko suoritetaan, saat heti vahvan viittauksen self, jotta voit asettaa sille ominaisuuksia myöhemmin.
  3. seuraavaksi vahvistetaan response.result osoittaa menestystä ja response.result.value on joukko sanakirjoja.
  4. nyt asetat self.flavors joukon Flavor olioita, jotka FlavorFactory luovat. Tämä on luokan A ”kollega” kirjoitti sinulle (Olet tervetullut!), joka ottaa joukon sanakirjoja ja luo niiden avulla instansseja Flavor.
  5. lopuksi Ladataan kokoelmanäkymä uudelleen ja valitaan ensimmäinen maku.

Rakenna ja juokse. Voit nyt valita jäätelön maun!

Choose Flavor

nyt maukas toppaus

sovellus näyttää hyvältä, mutta sitä voi vielä parantaa.

Huomasitko, että sovelluksen makutiedoston lataaminen kestää sekunnin? Jos olet nopea Internet-yhteys, et ehkä huomaa viivettä, mutta asiakkaat eivät aina ole niin onnekas.

seuraava askel on näyttää latausindikaattori sovelluksessasi, jotta asiakkaat ymmärtävät sen lataavan tietoja eikä vain pyörittelevän kirjastojaan. MBProgressHUD on todella mukava indikaattori, joka toimii hyvin täällä. Ja se tukee CocoaPods; mikä yhteensattuma! :]

käyttääksesi tätä pod-tiedostoa sinun on lisättävä se Poditiedostoosi. Sen sijaan, että avaisit Podfile-tiedoston komentoriviltä, voit nyt löytää sen palkojen kohteesta työtilassa:

palot työtilassa

avaa Podfile ja lisää Seuraava Heti Alamofire-rivin jälkeen:

pod 'MBProgressHUD', '~> 1.0'

Tallenna tiedosto ja asenna riippuvuudet pod install in kuolemansairas, kuten aiemminkin.

Huomaatko mitään erilaista tällä kertaa? Jep, määrittelit versionumeroksi ~> 1.0. Mutta miksi?

CocoaPods suosittelee, että kaikki palot käyttäisivät semanttista versiointia. Ymmärrä hetki, mitä se on.

semanttinen versio

moneen kertaan nähdään näin kirjoitettu versio: 1.0.0. Nämä kolme numeroa ovat major -, minor-ja patch-versionumerot.

esimerkiksi versionumerolle 1.0.0 1 on pääluku, ensimmäinen 0 on molliluku ja toinen 0 on paikkaluku.

semanttinen Versioesimerkki

Jos pääluku kasvaa, se osoittaa, että versio sisältää ei-taaksepäin yhteensopivia muutoksia. Kun päivität pod seuraavaan pääversioon, saatat joutua korjaamaan build-virheitä tai pod voi käyttäytyä eri tavalla kuin ennen.

Jos pienluku kasvaa, se osoittaa, että versio sisältää uusia toimintoja, jotka ovat taaksepäin yhteensopivia. Kun päätät päivittää, saatat tarvita tai ei tarvitse uusia toimintoja, mutta sen ei pitäisi aiheuttaa rakentamisvirheitä tai muuttaa olemassa olevaa käyttäytymistä.

Jos paikkamäärä kasvaa, se tarkoittaa, että uusi versio sisältää virheenkorjauksia, mutta ei uusia toimintoja tai käyttäytymisen muutoksia. Yleensä haluat aina päivittää patch-versiot mahdollisimman pian, jotta podista saadaan uusin, vakaa versio.

lopuksi, kun korotat ylimmän kertaluvun-major, sitten molli ja sitten patch — edellä mainittujen sääntöjen mukaisesti, sinun on palautettava kaikki alemmat kertaluvut nollaan.

tässä esimerkki:

harkitse pod, jonka nykyinen versionumero on 1.2.3.

Jos teet muutoksia, jotka eivät ole taaksepäin yhteensopivia, niissä ei ole uusia toimintoja, mutta korjaat olemassa olevia vikoja, annat sille version 2.0.0.

Haasteaika

, Jos podissa on nykyinen versio 2.4.6 ja teet muutoksia, jotka korjaavat vikoja ja lisäävät taaksepäin yhteensopivia toimintoja, mikä uuden versionumeron pitäisi olla?

vastaus: 2.5.0
selitys: jos teet muutoksia, jotka sisältävät uusia toimintoja, jotka ovat taaksepäin yhteensopivia, korotat sivunumeroa ja palautat paikkauksen nollaan.

Jos podissa on nykyinen versio 3.5.8 ja teet olemassa oleviin toimintoihin muutoksia, jotka eivät ole taaksepäin yhteensopivia, mikä uuden versionumeron pitäisi olla?

vastaus: 4,0,0
selitys: Jos muutokset muuttavat olemassa olevaa käyttäytymistä eivätkä ole taaksepäin yhteensopivia, sinun on lisättävä päälukua ja nollattava molli-ja paikkanumerot nollaan.

Jos podissa on nykyinen versio 10.20.30 ja korjaat vain bugeja, mikä uuden versionumeron pitäisi olla?

vastaus: 10.20.31
selitys: jos korjaat vain vikoja, lisäät vain paikkamäärää.

sanottuaan kaiken tämän sääntöihin on yksi poikkeus:

Jos podin versionumero on alle 1.0.0, sitä pidetään beta-versiona. Pienet numerolisäykset voivat sisältää muutoksia, jotka eivät ole taaksepäin yhteensopivia.

joten takaisin Mbprogresshubiin: käyttämällä ~> 1.0 kannattaa asentaa uusin versio, joka on suurempi tai yhtä suuri kuin 1.0 mutta pienempi kuin 2.0.

Tämä varmistaa, että saat uusimmat virheenkorjaukset ja ominaisuudet, kun asennat tämän podin, mutta et vahingossa vedä taaksepäin yhteensopimattomia muutoksia.

voit käyttää myös useita muita operaattoreita. Täydellinen luettelo, katso Podfile syntaksi viittaus.

nyt kun olet oppinut, miten operaattorit toimivat Cocoapodien kanssa, on aika viimeistellä sovellus.

näyttää edistymisen

Jos muistat, rakensit edistymisindikaattoria, joka näyttää käyttäjillesi, milloin makuja Ladataan sovelluksessa.

Jos haluat lopettaa tämän toiminnon, palaa takaisin pickflavorviewcontrolleriin.swift ja lisää seuraava heti muun tuonnin jälkeen:

import MBProgressHUD

seuraavaksi lisätään seuraavat auttajamenetelmät loadFlavors():

private func showLoadingHUD() { let hud = MBProgressHUD.showAdded(to: contentView, animated: true) hud.label.text = "Loading..."}private func hideLoadingHUD() { MBProgressHUD.hide(for: contentView, animated: true)}

nyt, in loadFlavors(), lisätään seuraavat kaksi riviä (kuten ilmoitettu):

 private func loadFlavors() { showLoadingHUD() // <-- Add this line Alamofire.request( "https://www.raywenderlich.com/downloads/Flavors.plist", method: .get, encoding: PropertyListEncoding(format: .xml, options: 0)) .responsePropertyList { response in guard let self = self else { return } self.hideLoadingHUD() // <-- Add this line // ...

kuten metodinimet antavat ymmärtää, showLoadingHUD() näyttää esiintymän MBProgressHUD GET-pyynnön ladatessa. hideLoadingHUD() piilottaa HUD: n, kun pyyntö päättyy. Koska showLoadingHUD() on sulkemisen ulkopuolella, se ei tarvitse self etuliitettä.

Rakenna ja aja. Näet nyt latausmittarin, kun makuja Ladataan. Jos internetyhteys on liian nopea tähän, voit lisätä sleep(_:) lausuman juuri ennen hideLoadingHUD(), jotta voit kokea Mbprogresshudin hyvyyden. :]

sovellus lataustunnuksella

hienoa työtä! Asiakkaat voivat nyt valita suosikki jäätelön maku ja he näkevät latauksen indikaattori, kun makuja lataavat.

minne tästä eteenpäin?

voit ladata valmiin projektin käyttämällä tämän sivun ylä-tai alareunassa olevaa Download Materials-painiketta.

Onneksi olkoon! Tunnet nyt Cocoapodien käytön perusteet, kuten riippuvuuksien luomisen ja muokkaamisen sekä semanttisen versioinnin ymmärtämisen. Olet nyt valmis käyttämään niitä omissa projekteissasi!

on paljon muutakin, mitä voi tehdä Cocoapodeilla. Voit etsiä olemassa olevia kapseleita viralliselta CocoaPods-sivustolta. Tutustu myös CocoaPods-oppaisiin oppiaksesi tämän erinomaisen työkalun tarkemmat yksityiskohdat. Mutta varoitan, kun alat käyttää sitä, ihmettelet, miten olet koskaan onnistunut ilman sitä! :]

toivon, että nautit tämän CocoaPods-opetusohjelman lukemisesta yhtä paljon kuin sen kirjoittamisesta. Mitkä ovat suosikkejasi CocoaPods? Mihin luotat eniten arjen projekteissa? Voit vapaasti jakaa tai esittää kysymyksiä alla olevissa kommenteissa!

raywenderlich.com viikoittain

raywenderlich.com uutiskirje on helpoin tapa pysyä ajan tasalla kaikesta, mitä sinun tarvitsee tietää mobiilikehittäjänä.

Hanki viikottainen kooste tutoriaaleistamme ja kursseistamme, ja saat bonuksena ilmaisen syvällisen sähköpostikurssin!

keskimääräinen luokitus

4.8/5

lisää luokitus tälle sisällölle

Sign in lisätäksesi luokituksen

33 arviota

Vastaa

Sähköpostiosoitettasi ei julkaista.