swift

ยท๐ŸŽ iOS & Swift
๊ทธ๋™์•ˆ ๋„ˆ๋ฌด ๋‚˜ํƒœํ•ด์กŒ๋˜ ๋‚˜ ์ž์‹ ์„ ๋ฐ˜์„ฑํ•˜๋ฉฐ ๋‹ค์‹œ ๊ณต๋ถ€๋„ ์—ด์‹ฌํžˆ ํ•˜๊ณ , ๊ธ€๋„ ๋‹ค์‹œ ๊พธ์ค€ํžˆ ์จ๋ณด๊ณ ์ž ํ•œ๋‹ค. ์˜ค๋Š˜์€ fastlane์„ ์ด์šฉํ•ด์„œ TestFlight์— ์ž๋™์œผ๋กœ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ธํŒ…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ๋‚ด ๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฃฐ์„ ๋‚ ์งœ + ๋นŒ๋“œ ํšŸ์ˆ˜(ex. 2210041, 2210042, ..., 22100499)๋กœ ํ•˜๊ณ  ์žˆ์–ด์„œ ์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ–ˆ๋‹ค. Ruby ๋ฌธ๋ฒ•์„ ์ž˜ ๋ชฐ๋ผ์„œ ์„œ์นญ์„ ํ•˜๋‹ค๊ฐ€ ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ์ž˜ ์“ฐ์—ฌ์ง„ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ ์ผ๋ถ€๋งŒ ์ˆ˜์ •ํ•ด์„œ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ์ˆ˜๋™์œผ๋กœ TestFilght์— ์—…๋กœ๋“œํ•˜๋Š” ์ž‘์—…์ด ๋„ˆ๋ฌด ๊ท€์ฐฎ์€ ์ž‘์—…์ด ๋œ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ž‘์œผ๋ฉด ์ƒ๊ด€์ด ์—†๊ฒ ์ง€๋งŒ, ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ž๋™ํ™”๋ผ๋Š” ์ž‘์—…์ด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋งŒํผ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ๋  ์ˆ˜ ๋ฐ–์— ..
ยท๐ŸŽ iOS & Swift
๋‹ค์Œ ๊ธ€์€ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•œ ๊ธ€์ด๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด dictionary๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆœ๊ฐ„์ด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ๋‹ค. (..๋Š” ์˜ˆ์ „์—๋Š” array๋งŒ ์ฃผ๊ตฌ์žฅ์ฐฝ ์ผ์—ˆ์ง€.. ์ ์ ˆํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ ์žฌ์ ์†Œ์— ์“ฐ๋Š” ๊ฒƒ๋„ ์‹ค๋ ฅ์ธ ๊ฒƒ์„ ๋‚ ์ด ๊ฐˆ์ˆ˜๋ก ๋Š๋‚€๋‹ค..) ๋ญ ์—ฌํŠผ dictionary๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์˜ˆ์ œ๊ฐ€ ์•„๋งˆ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ถ€๋ถ„์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ํ™” ์žฅ๋ฅด๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. let genres = ["comedy", "romance", "comedy" , "comedy" , "action"] ์ฝ์–ด๋ณด๋ฉด ์ฝ”๋ฏธ๋”” ์žฅ๋ฅด๊ฐ€ 3ํŽธ, ๋กœ๋งจ์Šค ์žฅ๋ฅด๊ฐ€ 1ํŽธ, ์•ก์…˜ ์žฅ๋ฅด๊ฐ€ 1ํŽธ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดˆ๋“ฑํ•™์ƒ๋„ ์•Œ ๊ฒƒ์ด๋‹ค. ๊ทผ๋ฐ ์ปดํ“จํ„ฐ๋Š” ๋ชจ๋ฅธ๋‹ค. ์•Œ์•˜๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ์ข€ ๋” ..
ยท๐ŸŽ iOS & Swift
๋ฌธ์ œ ์ƒํ™ฉ UIToolbar ์ธ์Šคํ„ด์Šค๋ฅผ ์ฝ”๋“œ๋กœ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ๋ ˆ์ด์•„์›ƒ์„ ์žก์•„์ฃผ๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค. ๋‚˜๋Š” ๊ธฐ๋Šฅ์ด ์•ˆ ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด ๋ฉ”์‹œ์ง€ ๋ณด๋Š” ๊ฒƒ์ด ๋” ์‹ซ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• // โŒ let toolbar = UIToolbar() // ๐ŸŸข let toolbar = UIToolbar( frame: CGRect( origin: .zero, size: CGSize(width: 100, height: 44) ) ) Size๋Š” ๊ฐ€๋ณ๊ฒŒ ์•„๋ฌด ๊ฐ’์ด๋‚˜ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š” ๋“ฏ ํ•˜๋‹ค.
ยท๐ŸŽ iOS & Swift
URLSession ์•„๋ž˜ 3๊ฐ€์ง€๋ฅผ ์ž˜ ๊ธฐ์–ตํ•ด๋ณด์ž - URLSession - URLSessionDataTask - Response, CompletionHandler URLSessionDataTask - ์š”์ฒญ์„ ํ•˜๋Š” ํ•˜๋‚˜ํ•˜๋‚˜(Task) - ์ผ๋ฐ˜ ํ†ต์‹ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋‹ค์šด๋กœ๋“œ, ์‹œํฌ๋ฆฟ ๋ชจ๋“œ ๋“ฑ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ Task๋กœ ์ข…๋ฅ˜๊ฐ€ ๋‚˜๋‰œ๋‹ค. URLSessionDelegate - + å๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - ์ค‘๊ฐ„ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋‚˜ ๋ฐ›์•„์™”๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - ex. ์นด์นด์˜คํ†ก ์‚ฌ์ง„ 10์žฅ ํ•œ ๋ฒˆ์— ์ €์žฅ (๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•œ ์žฅ์”ฉ ๋‹ค์šด๋กœ๋“œ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.) - ์ผ๋ฐ˜ ํ†ต์‹ ์—์„œ๋Š” ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฅธ ํŽธ์ด๊ธฐ ๋•Œ๋ฌธ์— Delegate๊นŒ์ง€ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. URLSes..
ยท๐ŸŽ iOS & Swift
URL ๋ถ„์„ ๊ตฌ์กฐ URL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. scheme://[userinfo@]host[:port][/path][?query][#fragment] scheme ํ•ด๋‹น ๋ถ€๋ถ„์—๋Š” ์ฃผ๋กœ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๋ฉด ์ฃผ๋กœ http ๋˜๋Š” https ํ”„๋กœํ† ์ฝœ์ด ์œ„์น˜ํ•œ๋‹ค. ํ”„๋กœํ† ์ฝœ์ด๋ž€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ž์›์— ์ ‘๊ทผํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ •ํ•œ ์•ฝ์† ๋˜๋Š” ๊ทœ์น™์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. htttps๋Š” http์— ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. userinfo URL์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํฌํ•จํ•ด์„œ ์ธ์ฆ์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. host ๋„๋ฉ”์ธ ์ด๋ฆ„ ๋˜๋Š” IP ์ฃผ์†Œ๊ฐ€ ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค. port http๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 80 ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , https๋Š” 44..
ยท๐ŸŒฑ SeSAC
๋ ˆ์ด์•„์›ƒ ์ด์ œ ๋ทฐ์— ๋Œ€ํ•ด์„œ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ์—†๋‹ค. ๋ ˆ์ด์•„์›ƒ ์งœ๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋™์ผํ•˜๊ณ , ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ Dynamicํ•˜๊ฒŒ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. Realm, TableView ๊ฐฑ์‹ , TableView ๋กœ๋“œ Realm ์‚ญ์ œ ์‹œ ๋ฌธ์ œ ๋ฐœ์ƒ func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let favorite = UIContextualAction(style: .normal, title: "์‚ญ์ œ") { action, view, completio..
ยท๐ŸŒฑ SeSAC
๋ฐฑ์—…/๋ณต๊ตฌ ๊ฐœ์ธ ์ •๋ณด ๋ฌธ์ œ๋Š” ๋˜๊ฒŒ ๋ฏผ๊ฐํ•œ ๋ฌธ์ œ๋‹ค. ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์–ด๋Š ์ •๋„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„˜๊ธด๋‹ค. 1. ๋กœ์ปฌ - ์„œ๋ฒ„ ์ž์ฒด ์„œ๋ฒ„ ์„œ๋“œ ํŒŒํ‹ฐ (google drive, dropbox) : ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ๊ณ„์ •์— ๊ฐœ์ธ ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ, ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹, ๋ถˆํŽธํ•˜๊ณ  ์–ด๋ ค์šด ์ ์ด ๋” ๋งŽ์Œ ํŒŒ์ผ ์•ฑ : share activity ์ด์šฉํ•ด์„œ ์™ธ๋ถ€๋กœ ๋ฐฑ์—… ํŒŒ์ผ ์ „์†ก(mac, kakao, email, ...), ๋””ํดํŠธ ๊ธฐ๋ณธ ์•ฑ, ์•„์ดํฐ ์œ ์ €์—๊ฒŒ๋Š” 100ํผ์„ผํŠธ ๋Œ€์‘ 2. ๋ฐฑ์—… document - archive.zip(image, realm) ์ƒ์„ฑ - activity view controller ๋งŒ์•ฝ์— ์•„์ดํฐ์— ์ €์žฅ ๊ณต๊ฐ„์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–กํ• ๊นŒ? (์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒ˜) ๋ฐฑ์—… ํŒŒ์ผ์ด ์—†๋Š”..
ยท๐ŸŒฑ SeSAC
Document Directory ๊ฐ๊ฐ์˜ ์•ฑ์€ ๋ชจ๋‘ Sandboxํ™” ๋˜์–ด ์žˆ๋‹ค. ๊ฐ์ž ๊ณ ์œ ์˜ ๋ฐ”์šด๋”๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋ฐ”์šด๋”๋ฆฌ๋Š” Container๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ ํฌ๊ฒŒ Bundle Container, Data Container, iCloud Container๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ Documents ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” Data Container ์•ˆ์— ์œ„์น˜ํ•ด ์žˆ๋‹ค. Documents ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์‚ญ์ œ, ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฌด๋ฐฉํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฃจ๋Š” ์ปจํ…์ธ ์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค๋งŒ ์ €์žฅํ•œ๋‹ค. Realm์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Document ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. FileManager ์œ„์—์„œ ๊ฐ์ž ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ทธ ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด FileManager๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” Docum..
taeeekki
'swift' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)