Swift programozási nyelv - Szoftverfejlesztés fórum

üzenetek

hozzászólások


boost
(addikt)

Az Apple új programozási nyelvvel rukkolt elő, hogy idővel leváltsa a most használatos Objective-C nyelvet a platformjain.

A nyelvről iBook formátumban itt tudtok letölteni könyvet ingyenesen: [link], PDF-ben pedig a következő linken: [link]

Mi a véleményetek a nyelvről, próbálta már valaki? Én megjelenés másnapján letöltöttem hozzá a fejlesztői környezetet, de mivel még erősen Beta verzió, kb 10 perc nyomogatás, tesztelgetés után elszállt.

Nekem egyébként kevésbé jön be az új swift, mivel hozzám közelebb állnak a C alapú, erősen típusos nyelvek. C, C++, Java.


boost
(addikt)

Hello World:

println("Hello World")


boost
(addikt)

Jelezték, hogy már nem elérhető a swift könyv pdf formátumban a fenti linkről, ezért itt egy új link hozzá.

Link


nauro
(aktív tag)

Pörgessük kicsit meg a hozzászólásokat!

Itt érdemes kezdni: Apple Swift Programming Language
Nagyon jó tanagyag egyenesen a Stanford-ról. Egy teljes egyetemi félév anyaga megtekinthető.
Valamint két netes gyűjtemény, szintén hasznos leírásokkal:
learnswift.tips
RayWenderlich

Hajrá

[ Szerkesztve ]


sztanozs
(veterán)
Blog

Én most kezdek ismerkedni vele - egy ingyenes tréninget már végigtoltam: Swiftris

Nézegetek még, hogy hol találok értelmes ingyenes tréning anyagokat.
Sajna céges web based tréning (még) nincs Swift-hez. :(


Karma
(félisten)
Blog

Egy érdekes, gyakorlatias szemléletű anyagot találtam a hackingwithswift.com-on. A nyelv mellett az iOS mindenféle szegletéből ad kis ízelítőket.

Egyébként nekem nagyon tetszik a nyelv, nagy minőségi ugrás az Objective-C után, bár nem mondom, hogy nem kellett nagyon kicsavarodnom itt-ott. Leginkább az "Expression was too complex to be solved in reasonable time..." hiba, és az associated type-pal rendelkező protokollok korlátozásai akasztottak ki. :)


sztanozs
(veterán)
Blog

Köszi, megnézem magamnak :)


kemkriszt98
(aktív tag)

Van itt valaki? 😁
Most kezdtem tanulni a swiftet s nem teljesen tiszta mire is jók pontosan a külső paraméter nevek? (Gondolom így hívják magyarúl 😁 External parameter names)


Karma
(félisten)
Blog

Üdv. Biztosat nem tudok mondani rá (nem látok más mérnökök fejébe), de az biztos, hogy ez a lehetőség az Objective-C-ből eredeztethető, és nélküle elég nehézkes lenne bármilyen delegate-et írnod, amit a Cocoa osztályoknak kell átadnod.

Például a UITableViewDataSource protokollban a klasszikus

- (UITableViewCell *)tableView: (UITableView *)tableView
cellForRowAtIndexPath: (NSIndexPath *)indexPath

Swiftben ugye így néz ki:

func tableView(_ tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

Aláhúzással jelöltem a külső neveket, dőlttel a belsőket. A külsők a protokoll miatt kőbe vannak vésve, a belsők nélkül meg elég sokat kéne gépelned.

---

Egyébként nem tudom, mennyire elítélendő, de én szoktam saját protokollokban is használni, hogy a fentihez hasonló delegátokat kapjak.

[ Szerkesztve ]


kemkriszt98
(aktív tag)

Az a helyzet hogy az Objectiv-C-t egyáltalán nem ismerem... Úgy összességében nem értem a koncepciót.. Van ezeknek valami gyakorlati haszna? Pl. Elsőre az merűlt fel bennem, hogy ha úgyis meg kell nevezni a paramétert hívás kor akkor tán fel lehet cserélni a paraméterek sorrendjét? Vagy más célja van?


Karma
(félisten)
Blog

Nem lehet cserélni semmit, maximum a lokális paraméterek neveit (de minek tennéd?). A kompatibilitás miatt kellett ez a feature, neked nem kötelező használni, csak ha Obj-C osztályokkat kommunikálsz. iOS-en és OSX-en azért ez elég gyakori.


kemkriszt98
(aktív tag)

Bocs hogy itt mint értetlenkedtem de akkor Objective-c ben mi értelme van? Miért jó, hogy egy szóval többet kelljen írni? :DD


Karma
(félisten)
Blog

Hogy mi értelme van, nem tisztem vitatni :U De attól még így van. Úgy csinálták meg azt a nyelvet, hogy az external paraméternevek valójában a függvény nevének része.

A teljesség kedvéért, C-ben meg valahogy így nézne ki a korábban felhozott metódus:

UITableViewCell* tableViewCellForRowAtIndexPath(UITableView *tableView, NSIndexPath *indexPath)


kemkriszt98
(aktív tag)

Nem kritizálásból kérdeztem csak nekem fölöslegesnek tűnt picit... De ok.. elfogadjuk és hallgatunk :)

[ Szerkesztve ]


kemkriszt98
(aktív tag)

Sziasztok. Egy kamera felületet próbálok felépíteni az alap helyett... Az egyetlen problémám az, hogy attól függően, hogy melyik irányba áll a telefon vagy az előlapi vagy a hátlapot kamera fejjel lefelé levő képet ad.
Googleon megtaláltam a megoldást, hogy hogyan lehet megváltoztatni a kimenet orientációját de nekem az AVCaptureMovieFileOutput connectionWithMediaType-Ja nil-t ad vissza. Milyen megoldást javasoltok?


Karma
(félisten)
Blog

Ezt olvastad már?


Karma
(félisten)
Blog

Ha valaki nem ismerné, de hozzám hasonlóan sarokba kódolja magát, ez a blogbejegyzés minden karaktere aranyat ér.

Történt ugyanis, hogy a projektem egyik napról a másikra ötször annyi ideig fordul, mint korábban. A Swift fordítónak átadott magic paraméter(*) hatására kiírja, hogy melyik függvénnyel mennyi időt töltött, onnantól meg lehet optimalizálni a típusokon.

(*) Ez pedig nem más, mint a "-Xfrontend -debug-time-function-bodies".

Illetve némi summázási ötlet: itt.

[ Szerkesztve ]


kemkriszt98
(aktív tag)

Sziasztok,
Szerverről kapok egy json-t, ezt átalakítom így:

NSJSONSerialization.JSONObjectWithData(json, options: NSJSONReadingOptions())

ha ezt most kiiratom akkor szépen megjelenik nekem az objektum.. de abban a percben, ahogy castolni akarom nil-t kapok.
dictionary- vá próbáltam így:

NSJSONSerialization.JSONObjectWithData(json, options: NSJSONReadingOptions()) as? NSDictionary

meg így:

NSJSONSerialization.JSONObjectWithData(json, options: NSJSONReadingOptions()) as? [String:AnyObject]

Ezeket láttam googleon de mind nil-t ad.. Szerintetek mi lehet az oka?

[ Szerkesztve ]


Karma
(félisten)
Blog

Mutathatnál részletet ebből a JSON-ből.

Illetve az se mindegy, hogy nem követsz-e el referenciális hibát (és valamiért egy ideiglenes változó megszűnik idő előtt). Más szóval, mit csinálsz az itt leírt kifejezések eredményével?


kemkriszt98
(aktív tag)

Sikerűlt...

[
{
"s":[
{
"name":"name",
"id":"234",
"img":"img"
},
{
"name":"name",
"id":"254",
"img":"img"
},
{
"name":"name",
"id":"274",
"img":"img"
}
],...
}
]

Kb. így néz ki.. Az történt, hogy [[String:AnyObject]]-re kellett castolni... Most először dolgozom json-al, úgyhogy nem tudom miért de arra tippelnék, hogy a külső [] miatt

[ Módosította: Karma ]


Karma
(félisten)
Blog

Jól tippeled, lévén a [ ] egy tömböt jelöl.


randras
(veterán)

Sziasztok,

Ha szeretnék az iOS fejlesztéssel megismerkedni, Swift-el kezdjem, vagy Objective-C-vel? Alapvetően webfejlesztési, C# és Java fejlesztési tapasztalataim vannak...

:R


kemkriszt98
(aktív tag)

Sziasztok. Egy elméleti kérdés. iOS 9-Ben bevezetett cuccokat hogy érdemes használni? Ha például most készíték egy app-et akkor miért érné meg nekem mondjuk StackView-kat használni ha utána ki kell "izzadjam" ugyan azt a hatást régebbi eszközökkel? De akkor meg ne használjam őket mondjuk úgy az iOS 10-11 ig? Mi a módszeretek/véleményetek?


Karma
(félisten)
Blog

Szerintem nem kell foglalkoznod egy új alkalmazásnál a régebbi iOS-ekkel. Egyrészt négy éves eszközök is megkapták az iOS9-et, jelenleg 84%-on áll; másrészt mire elkészül az appod, még ehhez az arányhoz képest is javulni fog az állás.

Ha mégis valami miatt nem tudod elengedni ezt a bázist, akkor meg olyan kész megoldásokat keresnék a helyedben, amik minden verzióval működik (és ezt mondjuk reklámozzák is).

[ Szerkesztve ]


kemkriszt98
(aktív tag)

Sziasztok. Hogy tudnék valami hasonlót kreálni a toolbar-ból?
Eredetileg úgy akartam megoldani, hogy toolbar helyett egy sima view-t használok de ezzel az a baj, hogy egy navController-ben vagyunk és minden scene re kell egy pont ugyan olyan s akkor elég furán néz ki, hogy oldalról becsúszik ugyan az a menü...
Szerk.: A hátterekkel van bajom ... láttam, hogy lehet háttér képet beállítani egy BarButtonItem-nek de akár, hogy próbáltam, nem jött ki jól... kimaradt egy egy csík felül... eltakart más elemeket...

[ Szerkesztve ]


kemkriszt98
(aktív tag)

Na sikerűlt megoldani 😊
Viszont van másik kérdésem... Ha van egy nav controllerem egy stpryboardban és egy scenem egy másikban meg lehet valahogy oldani, hogy az IB-ből adogassak gombokat a scene nav/tool - barjához vagy csak kódból lehetséges?


Karma
(félisten)
Blog

Meg lehet oldani. A lényeg, hogy kerüljön egy Navigation Item a storyboardra, azt utána szabadon manipulálhatod.


kemkriszt98
(aktív tag)

Fletételezem hasonlóan megy a toolbar is.. Kösz


kemkriszt98
(aktív tag)

Sziasztok, kellene nekem agy olyan AR API amit egyszerűbb használni swift el még ha obj c ben is van írva.. Nem baj ha nincs ingyen nekem az is jó ha van egy Trial verzió ami tele van watermarkokkal.. Eddig próbáltam a wikitude-ot de ahogy láttam azt nem lehet swiftel használni mert hibaüzenetet ad az Xcode hogy újra kellene fordítani... Aztán próbálkoztam az ARToolKit-el de ott végkép nem találtam leírást hogy hogy kellene beimportálni a projektembe...


kemkriszt98
(aktív tag)

Sziasztok, többször találkoztam olyannal hogy egy app-om kb. 1 hét után nem indulnak el többet... Egyszerűen crashelnek mielőtt elindulnának... Most észre vettem, hogy az eszközfelügyelőből is eltűntek..(Nem csak az én telefonomon). Én rontok el valamit vagy az ingyenes developer acc miatt van? Vagy más az oka?

[ Szerkesztve ]


randras
(veterán)

Hamarosan végzek egy Swift tanfolyammal, utána ebbe terveztem belefogni, mi a véleményetek róla? Hosszúnak éppen hosszú, de mennyire a gyakori és szükséges dolgokat tárgyalja, van valami, ami fontos, és nincs benne? Lynda.com-on is rengeteg kurzus van. :U

[ Szerkesztve ]


theuprising
(tag)

randras:
Szia!

Melyik Swift tanfolyammal végzel?
Ez a stanfordi kurzus elég jó, és még ingyenes is, megéri végigmenni rajta. jó alapot ad.

OFF - Egyéni vélemény:
Bár csodákat nem kell várni ezektől, programozni sajnos nem tanítanak meg, max csak néhány kicsi szegmensére mutatnak rá épp a Swift-re izolálva. Kicsit olyan, mintha megmutatnának pár saját megoldást és utána azok alapján "ollózz össze egy appot". Azt sem tudjuk miért csináljuk azt amit, sokszor nincs mögötte épkézláb magyarázat, csak utánozzuk őket és az esetleges eredmény láttán elhisszük, hogy tényleg programozni tanulunk. Bullshit. Tanultam én is Udemy-s és Lynda-s kurzus alapján, sőt rengeteg free (általában youtube) tutorial alapján is, sajnos tapasztalatból beszélek, hiába a nagy marketing meg hírverés ezek mögött, megismerésen és egy valamennyire fix alapon kívül többet nem adnak, nem tesznek fejlesztővé.

Amire azt mondom, hogy megéri az Amit Bijlani kurzusa (ha jól emlékszem ő teamtreehouse-os) mert ő tényleg azzal kezdi, hogy mi az a class, struct, hogyan használd őket, hogy működik az öröklődés, mi az a példányosítás, parent class, subclass, konstruktor... Nem azzal indít, hogy "itt egy button, húzd be a kódba Action-ként, és állíts át valami 20mp alatt leguglizható értéket és kész milyen szép ügyes voltál mostantól iOS fejlesztő vagy".
Alapnak, indulásnak jók az ilyen Udemy-s nagyot mondó kurzusok, mint pl amit Rob Percival is csinál, de azokra támaszkodni nem érdemes, inkább csak megismerteti velünk az iOS/Swift lehetőségeit. Ott kap el általában az agyhalál amikor kinyögik, hogy nem kell programozói előtanulmány, valamint a kurzus végén megmondják, hogyan keress 10ezer dollárt és legyél AppStore ász :)

A lényeg annyi a véleményem szerint, hogy egyéni akaraterő és elszántság kell ahhoz, hogy valakiből fejlesztő váljon. Szomjazni kell az információt, utána kell nézni rengeteg programozói szemszögből vett definíciónak és azt megtanulni, értelmezni, felfogni, megérteni; pl mi a különbség a struct és a class között? mit jelent az, hogy az egyik copy type, a másik reference type? miért jó ez? mikor tudjuk ezt kihasználni/felhasználni? - ezt kb semelyik ilyen "10ezer dolláros divatkurzus"-ban nem mondják el, de ha egy állásinterjún ezt nem tudjuk akkor szemetebb helyeken kiröhögnek (sajnos valahol azért jogosan). Ha elkapja az embert az a gondolkodási mód, hogy programtervezői szemmel nézzen az XCode-ra, a saját megoldását implementálja, debuggolja, tesztelje és optimalizálja, az az igazi fejlesztő. Ez a másolgatós ollózás nem az.

Senkit nem akarok elrettenteni ezektől a kurzusoktól, ne értsetek félre, csak saját élettapasztalataim írom le, hogy nektek ne kelljen belezuhanni ezekbe és átélni őket, sok hónapot belefektetve, hogy a végén azt érezzétek, "nem is tudok semmit, mégis mit képzeltem?". Összességében én azt ajánlom, hogy ezeket a kurzusokat vigyétek végig, ezzel párhuzamosan tanuljatok programozás elméletet, érezzetek rá a gondolatmenetére (szabadon elérhetőek pl az ELTE proginfós előadásai, honlapjai, de a neten millió számra vannak elérhető doksik), és ezután jöhet az érdemi része, hogy saját elképzelés alapján írjatok tesztjelleggel appokat, használjátok-olvassátok-értelmezzétek mások opensource kódjait, osszátok meg másokkal pl githubon a sajátjaitokat, kommunikáljatok más fejlesztőkkel, kérjetek tanácsot az IT közösségi fórumokon, és szó szerint minden nap csináljátok ezt, ez a tanulás, így lehettek fejlesztők. Kitartó munkával (és némi előtanulmánnyal pl egyetemről) fél év alatt elég tudás gyűlhet össze egy junior fejlesztői állásra (ami ezekből állhat: szakmai elbeszélgetés, szóbeli teszt, aztán tesztapp írása). Ez egy nehéz, komplex agymenetet igénylő munka, ne gondoljuk azt, hogy pl a Udemy kurzusa elég lesz. Inkább ahhoz hasonlítanám, amikor valaki feltelepít egy Win7-et a gépére és utána bejelenti, hogy rendszergazda. :)

Köszi, ha elolvasta bárki, személy szerint senkinek nem szólt ez az összefoglaló, csak úgy kiadtam magamból, hátha tudok segíteni legalább ezzel egy leendő iOS fejlesztő kollégának. Ha kérdésetek van, csak nyugodtan, én is junior iOS fejlesztő vagyok.


kemkriszt98
(aktív tag)

Sziasztok.
Egy videót próbálok frame-ekre bontani. Itt a kódom:

private class func videoToFrames(name:String, vExtension ext: String)->[UIImage]?{
do{

var frames = [UIImage]()

let url = NSBundle.mainBundle().URLForResource(name, withExtension: ext, subdirectory: "Assets")!
let asset = AVAsset(URL: url)
let reader = try AVAssetReader(asset: asset)
let output = AVAssetReaderVideoCompositionOutput(videoTracks: asset.tracksWithMediaType(AVMediaTypeVideo), videoSettings: nil)
output.videoComposition = AVVideoComposition(propertiesOfAsset: asset)
reader.addOutput(output)
reader.startReading()

let frameCount = Int(asset.duration.seconds*fps)
let context = CIContext()

print("Asset reader: \(reader.error)")
for _ in 0..<frameCount{
let buff = output.copyNextSampleBuffer()
if buff == nil{

continue
}
let pixelBuffer = CMSampleBufferGetImageBuffer(buff!)! as CVPixelBuffer
let ciImage = CIImage(CVPixelBuffer: pixelBuffer)
let cgImgRef = context.createCGImage(ciImage, fromRect: CGRectMake(0, 0, CGFloat(CVPixelBufferGetWidth(pixelBuffer)), CGFloat(CVPixelBufferGetHeight(pixelBuffer))))
frames.append(UIImage(CGImage: cgImgRef))
}
return frames
}catch{
print(error)
return nil
}
}

.mp4 fájlokkal működik de nekem .mov kellene az aplha channel miatt. Arra viszont azt a hibaüzenetet kapom, hogy:

Error Domain=AVFoundationErrorDomain Code=-11833 "Cannot Decode" UserInfo={NSLocalizedFailureReason=The decoder required for this media cannot be found., NSUnderlyingError=0x15e77fb90 {Error Domain=NSOSStatusErrorDomain Code=-12906 "(null)"}, AVErrorMediaTypeKey=vide, NSLocalizedDescription=Cannot Decode})

Google-on nem találok semmi használhatót... próbáltam a pixel formatokat állítgatni de az sem segített. Esetleg valami ötlet?


kemkriszt98
(aktív tag)

Sziasztok,

Adott egy ilyen layout:

A narancssárga view-t próbálom animálni de arra lenne szükségem, hogy a zöld (ami a narancssárga subview-ja ) vele eggyütt méreteződjön.. De nem teszi...

Itt a kód (A test a narancssárga) :

@IBAction func click(_ sender: AnyObject) {
test.frame = CGRect(x: self.view.frame.width/2, y: self.view.frame.height/2, width: 0, height: 0)
test.center = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height/2)
for sb in test.subviews{
sb.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
UIView.animate(withDuration: 0.5, delay: 1, options: .curveEaseIn, animations: {
self.test.frame = CGRect(x: self.view.frame.width/2, y: self.view.frame.height/2, width: 150, height: 150)
self.test.center = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height/2)

}, completion: nil)
}

Googleon találtam, hogy az animáció blokjába be kellene rakni azt, hogy .lazoutIfNeeded() de nem segített... Aztán azt próbáltam, hogy a a zöld view nak beállítom az autoresizingMask-ját flexibleWidht flexibleHeight-ra... De az sem segít.. Valami ötlet?


tm5
(tag)

Nem fejleszt senki swiftben? Nagyon kihalt ez a topic :)
Lenne 1-2 kérdésem, de csak akkor ha más is van errefelé...


thiclyoon
(aktív tag)

Aktív(abb) swift fejlesztő jelen :) nekem is sokat kell még majd fejlődnöm, de ha kérdés van lehet tudok segíteni


tm5
(tag)

Ennyi idő távlatából már nem emlékszem, hogy épp mivel szívtam, de köszi a jelentkezést :)
Elég lassan haladok a Swifttel, mert nem töltök elég időt vele. Egyelőre csak hobbi, de tetszik.


tm5
(tag)

Na tegyünk egy próbát :)
Hogyan lehet átmigrálni egy core data modelt egyik projektből a másikba?
Import export nagyon nincs, itt ott említenek egy olyat, hogy csak át kell másolni és hozzáadni a projekthez, de megoszlanak róla a vélemények, hogy működik-e. Főleg, hogy akkor át is nevezném.
Tehát Project A-ból átmásolnám az A.xcdatamodelid-t Project B-be B.xcdatamodelid néven és az A data model-t is átnevezném B data model-re.

Próbálnám úgy is, hogy a B.xcdatamodelid-ba átmásolnám az A tartalmát, de ahogy látom, az egy könyvtárstruktúra és legbelül van egy content nevű fájl, annak tartalmát kéne átvinni. Semmilyen programmal nem tudtam belenézni, csak terminálból derítetttem ki ezeket is.


tm5
(tag)

Megoldódott ezzel a módszerrel.


CharlieDrop
(veterán)

Sziasztok

bár nem nagyon pörög a topik, de hátha. Korábban volt szó hol érdemes tanulni, azóta úgy látom itthon is vannak elérhető képzés. Valaki ajánlja valamelyiket?

köszi :R


Bici
(félisten)

Sziasztok!

Nem találtam iOS fejlesztős topikot, de remélem, itt sem OFF.

iOS-re is el szeretném készíteni a készülő Androidos progimat, de nincs semmilyen Apple eszközöm.
Olvastam felhős megoldásoktól, de az erről szóló weblapok olvasgatása nem kapcsolta fel a villanyt teljesen.
Meg tudom úszni teljesen az alma eszköz birtoklást?
IPhone-t és iPad-et is tudok felhőben szimulálni?

Mennyire megbízhatóak ezek a szimulátorok? Mekkora eséllyel jönnek ki a különböző eszközökön lehetségesen előforduló hibák?

Köszi! :R

[ Szerkesztve ]

üzenetek