swiftUI

ํ”„๋กœ์ ํŠธ ๐Ÿ› ๏ธ/ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

task(id: ) ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„๊นŒ?

๋ฌธ์ œ ์ƒํ™ฉ ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ• ๋•Œ์˜€๋‹ค. ์ €๋ฒˆ๊ณผ ๊ฐ™์€ ๊ตฌ๋…ํ•˜๊ธฐ๊ฐ€ ๋ฐ˜์˜์ด ์•ˆ๋˜๋Š” ์ด์Šˆ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ƒํ™ฉ์ด ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค..! ์ €๋ฒˆ ์ด์Šˆ์˜ ์›์ธ์€ onAppear์™€ onDisappear์˜ ์ž˜๋ชป๋œ ํ˜ธ์ถœ ์ˆœ์„œ๋กœ ๊ตฌ๋…ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ, ๋ทฐ๋ฅผ ๋‚˜๊ฐ”๋‹ค ๋“ค์–ด์˜ค๋ฉด ๋ฐ˜์˜์ด ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์—๋Š” ๋น„์Šทํ•œ ์ƒํ™ฉ์ด์ง€๋งŒ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์˜€๋‹ค. ์ด๋ฒˆ ์ด์Šˆ์˜ ์›์ธ์€ ForEach ์˜€๋‹ค. ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ ,, ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ ๋ณด๋ฉด // 1๋ฒˆ ์ฝ”๋“œ ForEach(0..

ํ”„๋กœ์ ํŠธ ๐Ÿ› ๏ธ/ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

onAppear์™€ onDisappear์˜ ํ˜ธ์ถœ ํƒ€์ด๋ฐ

๋ฌธ์ œ์ƒํ™ฉ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋˜ ์™€์ค‘ ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ๊ธฐ๋Šฅ์„ ๋„ฃ๋Š” ๊ณผ์ •์—์„œ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค ๐Ÿšจ ์–ด๋–ค ์ด์Šˆ๋ƒ๋ฉด!!?? ์„ค๋ช…์—์„œ ๋ฉ”๊ฑฐ์ง„๋””ํ…Œ์ผ๋ทฐ๋ฅผ “1๋ฒˆ ๋ทฐ”, ์œ ์ €ํ”„๋กœํ•„๋ทฐ๋ฅผ “2๋ฒˆ ๋ทฐ”๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1๋ฒˆ๋ทฐ → 2๋ฒˆ๋ทฐ๋กœ ๊ฐ€๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ทฐ ๊ณ„์ธต์—์„œ 1๋ฒˆ๋ทฐ์—์„œ 2๋ฒˆ๋ทฐ๋กœ ๋“ค์–ด๊ฐ€ ๊ตฌ๋…ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธํ›„์— ๋’ค๋กœ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ 2๋ฒˆ๋ทฐ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋‚ด๊ฐ€ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋…ํ–ˆ๊ณ , ๊ทธ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ์ผœ์ค˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— “๊ตฌ๋…์ค‘” ๋ฒ„ํŠผ์ด ๋‚˜์™€์•ผํ•˜๊ณ , ๊ตฌ๋…์ž์—๋Š” 1๋ช…์ด ๋– ์žˆ์–ด์•ผํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ..! ๊ทผ๋ฐ ๋ฌธ์ œ๋Š” 2๋ฒˆ๋ทฐ์—์„œ ์—…๋ฐ์ดํŠธํ›„์— 1๋ฒˆ๋ทฐ๋กœ ๋’ค๋กœ๊ฐ€๊ธฐ ํ›„ ๋‹ค์‹œ 2๋ฒˆ๋ทฐ๋กœ ๋“ค์–ด๊ฐ”์„๋•Œ ๋ฐ˜์˜์ด ์•ˆ๋˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค…! ์ผ๋‹จ ๊ตฌ๋…ํ•˜๊ธฐ ๋กœ์ง์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ตฌ๋…ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. ๊ตฌ๋…์„ ๋ˆ„๋ฅด๊ณ , 2๋ฒˆ๋ทฐ์—์„œ 1๋ฒˆ๋ทฐ๋กœ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ, o..

ํ”„๋กœ์ ํŠธ ๐Ÿ› ๏ธ/ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

PassthroughSubject์™€ onReceive ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‚˜์ด์Šคํ•œ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌํ•˜๊ธฐ

๋ฌธ์ œ ์ƒํ™ฉ Combine ์œผ๋กœ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ. ๋น„๋™๊ธฐ ์ฝ”๋“œ๋กœ ๋ทฐ๋ชจ๋ธ์— ์žˆ๋Š” ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ์ถœ๋ ฅ์„ ํ•ด๋ณด๋‹ˆ ๋นˆ๋ฐฐ์—ด์ด ์ถœ๋ ฅ๋˜๋Š” ์ƒํ™ฉ ํ™ˆ๋ทฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ํ•˜๋ฉด์„œ onAppear ๋‚ด์—์„œ communityVM.fetchCommunity ๋ผ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  communityVM.communities (๊ฐ€์ ธ์˜จ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œ๋ฌผ๋“ค) ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋‹ˆ .onAppear { print("onAppear ์‹œ์ž‘") communityVM.fetchCommunity() print(communityVM.communities) // [] ์ถœ๋ ฅ } ๊ฒฐ๊ณผ๋Š” ? “ [ ] “ ๋นˆ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ–ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋„˜๋‚˜ ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์˜€๋‹ค. ^^ ์›์ธ fu..

ํ”„๋กœ์ ํŠธ ๐Ÿ› ๏ธ/iOS

@StateObject @ObserverdObject ๊ทธ๋ž˜์„œ ๋ญ์‹œ ๋‹ค๋ฅธ๋””

@Stateobject ์™€ @ObservedObject ๋„๋Œ€์ฒด ๋ญ๊ฐ€ ๋‹ค๋ฅด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ? SwiftUI๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๊ณ , ๋‚˜๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๊ดด๋กญํ˜”๋˜ ,, ๋„๋Œ€์ฒด ์ด ๋‘˜์€ ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฒƒ์ด๋ฉฐ, ๋˜ ์–ด๋–ป๊ฒŒ ์ž˜! ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ ? ์•Œ์ž˜๋”ฑ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค..!! ๐Ÿ˜ค ๋จผ์ € Apple ์˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, @ObservedObject ๋Š” observable object ๋ฅผ subscribe(๊ตฌ๋…)ํ•˜๋Š” Property wrapper ์ด๊ณ , observable object ๊ฐ€ ๋ณ€ํ™”ํ•˜๋ฉด ๋ทฐ๋ฅผ ๋ฌดํšจํ™” ์‹œํ‚จ๋‹ค๊ณ  ํ•œ๋‹ค. ⇒ ์ฆ‰, ๋ทฐ์—์„œ observable object๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์ง€์ผœ๋ณด๋ฉด์„œ ์ด ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋˜๋ฉด ๋ทฐ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ ค์„œ ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. @Stateobject ๋Š”? observable obje..

ํ”„๋กœ์ ํŠธ ๐Ÿ› ๏ธ/iOS

Firebase Storage ์— asnyc/await ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์ค‘์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌํ•˜๊ธฐ

Firebase๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค์ด์–ด๋ฆฌ ์•ฑ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ์˜ "๋‹ค์ค‘์ด๋ฏธ์ง€ ์—…๋กœ๋“œ" ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹ค์ด์–ด๋ฆฌ ๊ฒŒ์‹œ๋ฌผ์˜ ๋‹ค์ค‘์ด๋ฏธ์ง€๋ฅผ fetch (๋ถˆ๋Ÿฌ์˜ค๊ธฐ) ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ async/await ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ๋จผ์ € ๋‹ค์ค‘์ด๋ฏธ์ง€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Firebase Storage ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , DB๋Š” Firebase firestore๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋‚ด๊ฐ€ ๋‹ค์ค‘์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ฒ˜์Œ์— ๊ตฌํ˜„ํ–ˆ๋˜ fetchImage ๋ฉ”์†Œ๋“œ์ด๋‹ค. func fetchAllImage(_ magazine: Magazines) { // ๋น„๋™๊ธฐ ์ž‘์—… 1 let _ = storage.reference().child("\(magazine.id)").listAll { result, error in if let result = resul..

WonderPark
'swiftUI' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก