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

Lucrul cu DDXMLElement si DDXMLNode – Swift

Se da urmatorul XML generat:

{"message":"bubu","name":"tester","contact_id":"7","to":"tester"}


Vreau sa scot din XML nodul "message": "bubu"
Solutie:
1. do {
completeMessage = try element.nodes(forXPath: "body")
} catch _ {
completeMessage = [DDXMLNode]()
}

In acest moment completeMessage este sub forma vectoriala:
completeMessage - [{"message":"bubu","name":"tester","contact_id":"7","to":"tester"}]
2. let mesg = (completeMessage.first)?.child(at: 0)
let finalMessage = ((mesg?.stringValue)?.convertToDictionary())?["message"]

Extrag primul si singurul element din vector, il convertesc in dictionar si extrag campul “message”
finalMessage este in acest moment Optional(“bubu”) insa tipul este Any?
3. let bodyMessage = finalMessage as? String ?? ""
print("bodyMessage - \(bodyMessage)")

In acest moment am valoarea sub forma de string si anume “bubu”

Share Button

Swift 3 – Xcode -View – Aspect Fit, Aspect Fill si Scale To Fit

Nu de putine ori atunci cand adaugam o poza (image) intr-un ImageView Controller avem probleme cu dimensionarea acesteia. In mod normal o poza este deformata pentru a intra in ImageView si nu se tine cont de ratio in acest caz. E cazul VIEW -> MODE -> SCALE TO FIT

 

Daca vreau sa imi pastrez original ratio pentru poza astfel incat ea sa se incadreze in ImageView Controller-ul meu, solutia este VIEW -> MODE -> ASPECT FIT. Poza este corect redimensionata pe dimensiunea controller-ului.

 

O alta varianta ar fi l VIEW -> MODE -> ASPECT FILL, caz in care poza este incadrata pe original ratio insa nu se mai respecta granita ImageView-ului, imaginea fiind incadrata corect pe dimensiunea ecranului.

 

Share Button