Swift 4 – Intro in Vision Framework

Daca ar fi sa fac un overview a saptamanii care tocmai a trecut, pot spune doar ca am avut ocazia sa lucrez cu o jucarie foarte draguta marca Apple.

Cum deja au trecut doua luni de la WWDC, era si cazul sa pun mana sa invat CoreML si Vision, framework-uri de machine learning. Continue reading

Share Button

Swift 3 – JSON – extragere informatii dintr-un fisier si transformare in Data

Avem urmatorul scenariu. Un fisier local ServerData.json care serveste continut pentru aplicatie; e o situatie putin atipica, in general content-ul vine din exterior.

Revenim, fisierul ServerData.json este adaugat in proiectul nostru si are in Target membership – File Inspector activat numele proiectului pentru a fi inclus la compilare.

Pentru a extrage informatiile din JSON si a le transforma in Data definim urmatoarea metoda:

 

public func dataFromFile(_ filename: String) -> Data? {

    @objc class TestClass: NSObject { }

    let bundle = Bundle(for: TestClass.self

    if let path = bundle.path(forResource: filename, ofType: “json”) {

        return (try? Data(contentsOf: URL(fileURLWithPath: path)))

    }

    return nil

}

bundle va fi un “container” care va incarca din path fisierul cu extensia json in caz ca exista (if let) urmand a obtine content-ul in format Data al json-ului.

 

Share Button

Swift 3 – Ordonarea unui array care are o dependență cu alt array

Sunt în situația în care am următorii vectori:

let array1: [String] = [“Diana”, “Cornel”, “Andrei”, “Stefan”, “Traian”]

let array2: [Int] = [1, 0, 2, 0, 3]

 

Vreau să ordonez lexicografic array1 și implicit pe cel de-al doilea care e dependență al celui dintâi – array2.

 

1. Combin cei doi vectori într-un vector cu zip:

let combined = zip(array1, array2).sorted {$0.0 < $1.0}

print(combined) // “[(“Andrei”, 2), (“Cornel”, 0), (“Diana”, 1), (“Stefan”, 0), (“Traian”, 3)]”

 

2. După ce am ordonat acest vector, extrag cei doi vectori cu map:

let sorted1 = combined.map {$0.0}

let sorted2 = combined.map {$0.1}

print(sorted1)  // “[“Andrei”, “Cornel”, “Diana”, “Stefan”, “Traian”]”

print(sorted2)  // “[2, 0, 1, 0, 3]”

 

 

 

Share Button

Cum functioneaza internetul? Trimiterea cererilor catre server

Am intampinat problema urmatoare: dupa rularea serverului Perfect primeam mesajul “The file //index.html was not found.” la adresa http://127.0.0.1:8080/.

Desi are o rezolvare extrem de simpla, am vrut sa intru in profunzimea acestei probleme asa ca a fost nevoie sa inteleg notiunea de ruta (server-side route, voi vorbi in alt post de asta) si pentru a intelege notiunea de ruta am avut nevoie sa inteleg, mai mult, cum sunt comunicate datele prin HTTP (HyperText Transfer Protocol, un protocol special prin care serverul si clientul “vorbesc” unul cu celalalt prin request-uri si raspunsuri) cat si modul in care se fac cererile catre un anumit server.

Continue reading

Share Button

Server-side Swift in 5 pasi

Problema pentru multi developeri Swift este aceea ca mereu depind de servicii web scrise, adesea, de alti programatori. In ajutorul dezvoltatorilor iOS vine Perfect, un set de librarii ce ne permite sa dezvoltam servere HTTP scriind cod Swift.

BONUS: Perfect mai pune la dispozitie si o librarie ce ne permite sa dezvoltam, tot in Swift, servere APNs (Apple Push Notifications). Pentru detalii: https://github.com/PerfectlySoft/Perfect-Notifications 

Continue reading

Share Button