-
Notifications
You must be signed in to change notification settings - Fork 167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
쥬스메이커 [STEP 2] 제이티, Ari #119
Changes from 1 commit
68927c4
c8f2ac6
e083fff
293f811
a560ab2
57031d7
eb48bef
0331594
8edd150
b28fab2
5d1c1da
f7bb20f
8bfece8
5f09d5c
d252b60
0484cd1
494468c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,58 +16,13 @@ class JuiceMakerViewController: UIViewController { | |
@IBOutlet weak var kiwiStockLabel: UILabel! | ||
@IBOutlet weak var mangoStockLabel: UILabel! | ||
|
||
|
||
override func viewDidLoad() { | ||
super.viewDidLoad() | ||
updateFruitLabels() | ||
|
||
NotificationCenter.default.addObserver(self, selector: #selector(fruitLabelChanged(notification:)), name: .changedFruitStockNotification, object: nil) | ||
} | ||
|
||
func updateFruitLabels() { | ||
currentStockLabelUpdate(fruit: .strawberry, label: strawberryStockLabel) | ||
currentStockLabelUpdate(fruit: .banana, label: bananaStockLabel) | ||
currentStockLabelUpdate(fruit: .pineapple, label: pineappleStockLabel) | ||
currentStockLabelUpdate(fruit: .kiwi, label: kiwiStockLabel) | ||
currentStockLabelUpdate(fruit: .mango, label: mangoStockLabel) | ||
} | ||
|
||
|
||
func currentStockLabelUpdate(fruit: Fruit, label: UILabel) { | ||
do { | ||
let stock = try FruitStore.shared.stock(fruit: fruit) | ||
label.text = String(stock) | ||
} catch let error as RequestError { | ||
showNotificationAlert(message: error.errorDescription) | ||
} catch { | ||
showNotificationAlert(message: "알 수 없는 에러가 발생했습니다.") | ||
} | ||
} | ||
|
||
@objc func fruitLabelChanged(notification: Notification) { | ||
// 수정된 과일과 과일의 재고갯수를 받아와서 label을 수정 | ||
guard let fruit = notification.object as? Fruit else { | ||
showNotificationAlert(message: "알 수 없는 에러가 발생했습니다.") | ||
return | ||
} | ||
currentStockLabelUpdate(fruit: fruit, label: fruitlabel(of: fruit)) | ||
} | ||
|
||
func fruitlabel(of fruit: Fruit) -> UILabel { | ||
switch fruit { | ||
case .strawberry: | ||
return strawberryStockLabel | ||
case .banana: | ||
return bananaStockLabel | ||
case .pineapple: | ||
return pineappleStockLabel | ||
case .kiwi: | ||
return kiwiStockLabel | ||
case .mango: | ||
return mangoStockLabel | ||
} | ||
} | ||
|
||
@IBAction func orderJuiceButtonTapped(_ sender: UIButton) { | ||
let buttonText = sender.titleLabel?.text | ||
let juice: Juice | ||
|
@@ -104,6 +59,49 @@ class JuiceMakerViewController: UIViewController { | |
} | ||
} | ||
|
||
@objc func fruitLabelChanged(notification: Notification) { | ||
// 수정된 과일과 과일의 재고갯수를 받아와서 label을 수정 | ||
guard let fruit = notification.object as? Fruit else { | ||
showNotificationAlert(message: "알 수 없는 에러가 발생했습니다.") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 전반에 걸쳐서 "알수없는~" 이 문장이 반복해서 사용되는데 따로 관리할 수 있는 법은 없나요? |
||
return | ||
} | ||
currentStockLabelUpdate(fruit: fruit, label: fruitlabel(of: fruit)) | ||
} | ||
|
||
func updateFruitLabels() { | ||
currentStockLabelUpdate(fruit: .strawberry, label: strawberryStockLabel) | ||
currentStockLabelUpdate(fruit: .banana, label: bananaStockLabel) | ||
currentStockLabelUpdate(fruit: .pineapple, label: pineappleStockLabel) | ||
currentStockLabelUpdate(fruit: .kiwi, label: kiwiStockLabel) | ||
currentStockLabelUpdate(fruit: .mango, label: mangoStockLabel) | ||
} | ||
|
||
func currentStockLabelUpdate(fruit: Fruit, label: UILabel) { | ||
do { | ||
let stock = try FruitStore.shared.stock(fruit: fruit) | ||
label.text = String(stock) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. CustomStringConvertible 을 채택해서 String(stock) 으로 표현해서 label.text 에서 사용한 이유가 있나요? stock.descriptionText 같은 스타일로 사용할 수도 있지 않나요? |
||
} catch let error as RequestError { | ||
showNotificationAlert(message: error.errorDescription) | ||
} catch { | ||
showNotificationAlert(message: "알 수 없는 에러가 발생했습니다.") | ||
} | ||
} | ||
|
||
func fruitlabel(of fruit: Fruit) -> UILabel { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 메소드는 어떤 역할을 하는 메소드인가요? |
||
switch fruit { | ||
case .strawberry: | ||
return strawberryStockLabel | ||
case .banana: | ||
return bananaStockLabel | ||
case .pineapple: | ||
return pineappleStockLabel | ||
case .kiwi: | ||
return kiwiStockLabel | ||
case .mango: | ||
return mangoStockLabel | ||
} | ||
} | ||
|
||
func showNotificationAlert(message: String, title: String = "OK") { | ||
let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) | ||
let cancel = UIAlertAction(title: title, style: .cancel, handler: nil) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
모든 button 의 action method 를 개별로 구현할 때와 이렇게 하나에 구현할 때의 장단점은 무엇인가요?