TIL_20180326 ~ 20180331
26 Mar 2018 | TIL2018.03.26
- ์ํ๊ธฐ 3๋จ๊ณ ์คํ
- UserDefaults
- ์์นด์ด๋น๊ตฌํ: NSCoding
- NSCodingํ๋กํ ์ฝ์ ํด๋์ค์์๋ง ์ฌ์ฉํ ์ ์์ด์ History๋ฅผ class๋ก ๋ณ๊ฒฝํจ
- encoding์ด ํ์์๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ผ๋ฉด NSCoding ํ๋กํ ์ฝ ํ์ ๋ฉ์๋๋ง ์ถ๊ฐํ๊ณ ๋ฉ์๋ ๊ตฌํ์ ํ์ง ์์๋ ๋จ. (๋๋ฒ๊ทธ๋ก ์ฐ์ด๋ณด๋ฉด encoding์๋๋ฅผ ํ์ง๋ง ๋น ๊ฐ๋ง ๋ค์ด๊ฐ๋๋ฏ)
- escaping closure?
- ์์ -
super.init()
: ์ค์ํํธ์ ์์๊ด๊ณ๋ ์๋ธํด๋์ค์์ ์๊ธฐ ์์ ์ ์ด๊ธฐํ ํ๊ณsuper.init()
์ ๋ฐ๋์ ์๋ฃํด์ผ joined()
- flatten:[[Beverage]]
์ด์ค๋ฐฐ์ด์ reduce()๋ฅผ ํตํด ๋์ ๋๋ฆฌ๋ก ๋ง๋ค๋ ค๊ณ ํ๋๊น ์ ๊ทผ์ด ์๋จ (ambiguous ์๋ฌ)joined()
๋ฅผ ์ฌ์ฉํด์ ์ผ๋ฐ 1์ฐจ์๋ฐฐ์ด๋ก ๋ณ๊ฒฝํ๊ณreduce()
์ ์ฉํจ
2018.03.27
- ์ด์ ํ ๋ถ๋ถ ์ ๋ฆฌ: joined() / flatmap, reduce
- joined()
- sequence๋ฅผ ์ ๊ณตํ๋ ์ฝ๋ ์ ์ ์ธ ์ ์๋ ๋ฉ์๋
- ์์๋๋ก, ์ฐ์๋๊ฒ ์ด์ด์ง ์ฝ๋ ์ ๋ฆฌํด
- ๋ค์์ ์ฝ๋ ์
์ element๋ค์ ์ฐ์์ผ๋ก ์ด์ด์ค(?):
์ด์ค๋ฐฐ์ด.joined()
๋ฅผ ํ๋๋ 1์ฐจ์๋ฐฐ์ด๋ก ๋ฆฌํด๋๋๋ฐ,FlattenBidirectionalCollection<Array<Element>>
๊ฐ ๋ฆฌํด๋จ. - FlattenBidirectionalCollection - Supporting types
- joined()
- ์์!!!
- ์์นด์ด๋น ์ธ์ฝ๋ฉ ๋์ฝ๋ฉ ํ ๋ถ๋ถ์์ forced unwrapping์์ ๊ธฐ
- DIP ์์กด์ฑ, ์์กด์ฑ์ญ์
- ์ฑ๊ธํค
- init(): ์ง์ ์์ฑ์ ๋ด์์ ์ง์ ์์ฑ์๋ฅผ ๋ ํธ์ถํ๋ฉด ์ฐธ์กฐ ์๋ฌ ๋ฐ์: ์๋ ์์์ฝ๋
class VendingMachine: NSObject, NSCoding {
static var sharedInstance = VendingMachine()
private override init() {
super.init()
VendingMachine.sharedInstance = VendingMachine(stockItems: Controller().setVendingMachineStock(unit: 1))
}
- Override: NSObject์์๋๋ฌธ์ ํค์๋ ํ์,
super.init()
๋ super.init()
: ์ค์ํํธ ์์์์ ์๋ธํด๋์ค์ ์ด๊ธฐํ๋ ๋ณดํต ์์ ์ ํ๋กํผํฐ๋ฅผ ๋ค ์ด๊ธฐํํ๊ณ , ๋ง์ง๋ง์super.init()
์ ํด์ฃผ๋ฉด ์์ ๊ด๊ณ์์ ๋ ์์ (์๋ธ)๊ณผ ์ํผ์ ์ด๊ธฐํ๊ฐ ๋๋๊ณ ์ฌ์ฉํ ์ค๋น๊ฐ ๋๋ค.- sharedInstance๋ณ์์ VendingMachine()์ ์ด๊ธฐํ๋ฉ์๋(private override init())๋ฅผ ํตํด์ ๊ฒฐ๊ณผ๊ฐ์ ๋์
ํ๋ ค๊ณ ํ๋์ค์, (locking์ด ๋์ด ์๋ ์ํ์ธ๊ฒ๊ฐ์) ๊ทธ init()์์์
VendingMachine.sharedInstance = VendingMachine(stockItems: Controller().setVendingMachineStock(unit: 1))
ํ๋ฉด์ VendingMachine์ ์ง์ ์์ฑ์init(stockItems:)
๊ฐ ํธ์ถ๋๋๊น ์ฐธ์กฐ ์๋ฌ๊ฐ ๋๋ฏ. (์๋ฌ๋ฉ์์ง: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0))
2018.03.28
- ์ฑ๊ธํค๊ฐ์ฒด ์ฌ์ฉํ๊ณ ์์นด์ด๋น ์๋๋ ๋ฌธ์ ํด๊ฒฐํ๊ณ ์ํ๊ธฐ step4 PR
- ์ฑ๊ธํค๊ณผ ์์นด์ด๋น ๋ฌธ์ ํด๊ฒฐํ ๋ฐฉ๋ฒ ์ ๋ฆฌ
- ์ํ๊ธฐ step4 ๋จธ์ง~!
- ์ต์ ๋ฒํจํด ๊ธฐ์ด์ ์ธ ๊ฒ ์กฐ์ฌํจ
- keyword: addObserver, postNotification
2018.03.29
- ์ง๋ฌธ๊ฑฐ๋ฆฌ: ํ์ ๋ฉ์๋์ ์ ํจ ์์ , ์ด๋ค ๊ฒ ์์ฑ ํ๋ผ๊ณ ํ๋๋ฐ, ์ ํํ ๋ป
-
์ฑ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ณ์ ์์ฑ์์ ๊ณผ ๋ทฐ์ปจํธ๋กค๋ฌ์ viewDidLoad์์ ํด๋น ๋ณ์์ ์ ๊ทผํ ๋์ ์์ ์ฐจ์ด. appDelegate์์๋ ๋ก๋๋ ์ํ๊ธฐ๊ฐ ์์ผ๋ฉด ๋ก๋๋ ๋ฐ์ดํฐ๋ก ์ฑ๊ธํค๊ฐ์ฒด๋ฅผ ๋ฐ๊ฟ์คฌ๋ค๊ณ ์๊ฐํ๋๋ฐ viewDidLoad์์ ์ ๊ทผํ appDelegate๋ณ์๋ ์ด๊ธฐ ๋น ์ํ๊ธฐ ๊ฐ์ด์์.
- ์ฑ๊ธํค ์ ์ฉํ๋ฉด์ ์ฒซ๋ฒ์งธ ์ฝ๋ฉํธ์ง๋ฌธ๊ฑฐ๋ฆฌ JKโs comment: ์์์ sharedInstance๋ก ๋ง๋ค์๋๋ฐ ์๋ DataStorage์์ loadํด์ self.vending ๋ง ๋ฐ๊พธ๋ฉด ๋ค๋ฅธ ๊ณณ์์ sharedInstance์ ์ ๊ทผํ๋ฉด ์๋์ง ์๋์? ์ฑ๊ธํค ์๋ฏธ๊ฐ ์๋์?
-
๋ค๋ฅธ ๊ณณ์์ ์ ๊ทผ ํ๋ค: ์ฑ๊ธํคํจํด์ ๋ค๋ฅธ ๊ณณ์์ ์ ๊ทผํ์ฌ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉํ์ธ๋ฐ, AppDelegate๊ฐ์ฒด(์ธ๋ถ)์์
VendingMachine.sharedInstance = loadData
์ด๋ฐ์์ผ๋ก ๊ฐ์ ์ง์ ๋ฐ๊พธ๋๊ฒ์ด ๋ฌธ์ ? - ํ์ง๋ง static์ด๋ผ๋๋ป์ ์ ์ญ๋ณ์, ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ๊ทธ ๋ณ์ ๊ฐ์ ๋ฐ๋ผ๋ณผ ์ ์๊ฒ(?)๋ง๋ค์ด๋๊ณ ์ ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ผํ๋ค๋ ๋ป์ด๋?ใ ใ
- ์ ์ญ๋ณ์ ์ค์ค๋ก load๋ ์ํ๊ธฐ ๋ฐ์ดํฐ๋ก ๋ฐ๊ฟ์น๊ธฐํ๋ ๊ฒ๊ณผ appDelegate๊ฐ์ฒด์์ ์ ์ธ๋ self.vending = sharedInstance์ self.vending์ ๋ฐ๊ฟ์น๊ธฐํ๋ ๊ฒ์ ์ ํํ ์ฐจ์ด
TIL
-
์ต์ ๋ฒํจํด ๊ตฌํ
- ์ฑ๊ธํค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๋ sharedInstance๊ฐ ์ฑ๊ธํค ๊ฐ์ฒด์ธ์ค ์๊ณ ์กฐ๊ธ ํค๋งธ๋๋ฐ ๊ทธ๋ฅ ๋ณ์๋ ๋๊ฐ์ด ์ด๋ค ์ค๋ธ์ ํธ๋ฅผ ์ฐธ์กฐํ๋ ๋ณ์๋ผ๊ณ ์๊ฐํ๋๊น ์ดํดํ๊ธฐ ํธํ๋ค. ์ฑ๊ธํค ๊ฐ์ฒด๋ฅผ ์ด๋์ ์๋ก ๋ง๋ค๊ณ ์ฐธ์กฐํด๋๊ณ ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ฑ๊ธํค์ ์ฐธ์กฐํด์ ์ฐ๊ณ ์์ผ๋๊น ๋ค๋ฅธ ์ํ๊ธฐ ๊ฐ์ฒด๋ฅผ ๋๊ฐ ๋ง๋ค๊ณ ๋ฐ๋ก ์์ ํ๊ณ ๋ฐ๋ก ์ ์ฅํ๊ณ ์์์..
- static๋ณ์๋ ์ฐธ์กฐ๋ฅผ ํ๋ ๋ณ์์ผ๋ฟ์ด๋ค!
- ์ํ๊ธฐ ์ต์ ๋ฒํจํด pr๋ณด๋
2018.03.30
- ์ํ๊ธฐ step5 ์ต์ ๋ฒํจํด ๊ตฌํ์ค~_~
- MVC๋ฅผ ์ ๋ถ๋ฆฌํ๊ณ ์ต์ ๋ฒํจํด์ ์ฉํ๋ ๊ตฌ์กฐ์ง๊ธฐ
- ์ต์ ๋ฒ ํจํด ์ฌ๋ฌ ์์ ์ฐพ๊ณ ์ฌ์ฉํ๋ ๋ฉ์๋ ์กฐ์ฌ
- AdminModeํ๋กํ ์ฝ๊ณผ UserModeํ๋กํ ์ฝ ๋๋ค ๋ง์กฑํ๋ ํ๋กํ ์ฝ ๋ง๋ค๊ธฐ
- ํ์ฌ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ์์ ๋ ๋ชจ๋ ๋ค ์์ฌ์๋ ๋ฐฉ์์ธ๋ฐ, ์ถํ admin๊ณผ UserMode๋ฅผ ๋ถ๋ฆฌํ ํ๋ฉด์ ๊ตฌ์ฑํ ๊ฒ์
- AdminMode ์ ์ฉ ๋์์ ๊ตฌํํ ํ๋กํ ์ฝ
- UserMode ์ ์ฉ ๋์์ ๊ตฌํํ ํ๋กํ ์ฝ
- ๋ ํ๋กํ ์ฝ์ ๋ชจ๋ ๋ง์กฑํ๋ ์์ํ๋กํ ์ฝ
- ๊ทธ ์์ ํ๋กํ ์ฝ์ ๋ง์กฑํ๋ VendingMachine
- ๋ทฐ์ปจํธ๋กค๋ฌ์ ์๋ vendingMachine์ ์ฐธ์กฐํ๋ ๋ณ์๋ ์์ํ๋กํ ์ฝํ์ ์ผ๋ก ์ ์ธ
- ์ฑ๋ธ๋ฆฌ๊ฒ์ดํธ์์ ์ ํํ ๋ชจ๋์ ๋ง๋ ํ๋กํ ์ฝ์ VendingMachine์ ๋ทฐ์ปจํธ๋กค๋ฌ์๊ฒ ์ง์ ํด์ค
2018.03.31
- ๋ฌธ์ : ์ํ๊ธฐ ๊ตฌ๋งค๋์์ด ์์ ์๋๋ ๋ฌธ์
- ์์ธ: vending๋ถํฐ stockController, shelf๊ฐ ์ด๊ธฐํ๋์ง ์๋ ๋ฌธ์ .
- ํด๊ฒฐ: shelf๊ฐ ์์นด์ด๋น์ด ๋ฐ๋ก ์๋จ. ๋์ฝ๋ฉ ๋ฉ์๋๊ฐ ์์ ๋น์ด์์์. ๋ทฐ ์ปจํธ๋กค๋ฌ์ ์ํ๊ธฐ ์ง์ด ์์๋๋ก itemTags๋ฅผ ์ด๊ธฐํํด์ค
- ๋ฌธ์ : ๊ตฌ๋งค๋ฒํผ์ ๋๋ ๋๋ฐ ๋ค๋ฅธ ์๋ฃ๊ฐ ๊ตฌ๋งค๋๋ ๋ฌธ์ ;;
- ์์ธ: ๋์ฝ๋ฉํ๋ฉด์ shelf๊ฐ ๊ฐ์ง itemTags๊ฐ viewController์ ์๋ ์์๋๋ก ์ด๊ธฐํ๋์ง์๊ณ stock์ด ์ด๊ธฐํ๋๋ ์์๋๋ก ์์๊ฐ ๋ฐ๋. ์ฆ shelf๊ฐ ์๋๋ผ stock์ ๋์ ๋๋ฆฌ ๊ฐ ์์๊ฐ ์ ์ฉ๋ผ์ ๋ทฐ์ปจํธ๋กค๋ฌ์ ์์์ ๋ค๋ฅธ ์ธ๋ฑ์ค์ ์๋ ์๋ฃ๊ฐ ๋ฆฌํด๋ ๊ฒ
- ํด๊ฒฐ : add๋ buy์ฒ๋ผ ์ฌ๊ณ ๊ฐ ๋ฐ๋๋ ๋์ํ๋ ๋ฉ์๋์
self.inventory = self.inventory.update(other: newItemSet)
์ฝ๋๊ฐ ์์ด ๋งค๋ฒ stock์ ์๋ inventory์์๋๋ก shelf ์์๊ฐ ๋ฐ๋๋ฉด์, ๋์ฝ๋ฉํ ๋ ์ง์ ํด์ค itemtags๊ฐ ๊ณ์ ์ ๋ฐ์ดํธ ๋ ๋ฌธ์ ๋ก, ์ผ๋จ update๋ ๋๋ง๋ค shelf๋ฅผ ์ ๋ฐ์ดํธ ํ์ง ์๊ธฐ๋กํจ - ๊ณ ๋ฏผํ ๋ฌธ์ :
- ์ฝ์์์๋ stock์ด๋ shelf๋ฅผ ์ด๊ธฐํํ ๋ ๋จผ์ [Beverage]๋ฅผ ๋ถ์ฌํ๊ณ ์ด๊ธฐํ๋ฉ์๋์์ ๋์ ๋๋ฆฌ๋ก ๋ฐ๊พผํ shelf๊น์ง ์ด๊ธฐํํ๊ธฐ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ ํ ์์ดํ shelf๊ฐ ์์ ๋น์ด๋ฒ๋ ธ์๋ ์์ดํ ์ง์ด ์์(key)๊ฐ ๋ฐ๋์์๋๋ฐ ์ง๊ธ์ viewController์์ ์ง์ ํด๋์ ์์๊ฐ ์์ผ๋ ์ง์ ํ ์์๋๋ก๋ง ๋์ ๋๋ฆฌ์ shelf๊ฐ ๊ตฌ์ฑ๋๊ฒ ๋ฐ๊ฟ์ผํ ๋ฏ
- ์ด๋ ๊ฒ๋๋ฉด shelf๋ฅผ ๋์ฝ๋ฉํ๊ฑฐ๋ ์ด๊ธฐํํ ๋ ํ๋์ฝ๋ฉ์ ์ํด๋๋ ๋ฏ
- ๋ํ ์ฌ๊ณ ๊ฐ 0๊ฐ์ธ ์์ดํ key๋ฅผ ์ง์ฐ๋๊ฒ์ด ์๋๋ผ key๋ ๋๋๊ณ ์ฌ๊ณ ๊ฐ 0์ธ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํด์ผํ ๋ฏ
- ์ง๋ฌธ๊ฑฐ๋ฆฌ
Comments