
@IBAction func btnResult(_ sender: UIButton) {
let height = Double(txtHeight.text!)!
let weight = Double(txtWeight.text!)!
// 위 두줄에 대한 상세 설명은 아래
print(height,weight)
let bmi = weight / (height * height * 0.0001)
let shortenedBmi = String(format: "%.1f", bmi)
var body : String = ""
// BMI 결과에 따른 판정
if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 {
body = "2단계 비만"
} else if bmi >= 25 {
body = "1단계 비만"
} else if bmi >= 18.5 {
body = "정상"
} else {
body = "저체중"
}
lblResult.text = "BMI: \(shortenedBmi), 판정: \(body)"
print("BMI: \(shortenedBmi), 판정: \(body)")
}
}
if txtHeight.text == "" || txtWeight.text == ""{
lblResult.textColor = .red
lblResult.text = "키와 체중을 입력하세요."
return
}else{
...
}
Int = 12 는 12를 뜻한다 그리고 "12"는 숫자 12가 아니라 문자열 1과2 인것이다. 물론 문자열은 연산이 되지 않는다.
int형으로 선언된 12를 Double형으로 선언한다면 12.0인 double형으로 나오게 된다.
하지만 문자열 12를 Double형으로 선언한다면 어떻게 될까?
즉 "12"를 int 형으로 Int("12")로 선언한다는 것이다.
그러면 String형인 "12"를 Double형으로 변환할 수 없기 때문에
옵셔널 "12"가 되게 되는 것이다.
물론 위에서 설명한 Int(12)로 선언한 것을 Double(12)로 선언 해도 옵셔널 12가 나오게 된다.
chat gpt 결과
1. 첫 번째 !: txtHeight.text!는 text 속성의 옵셔널 값을 강제로 언래핑하여 String 값으로 만듭니다.
2. 두 번째 !: Double(txtHeight.text!)!는 문자열이 Double로 변환된 결과를 강제로 언래핑하여 Double 값으로 만듭니다.
//원본
let height = Double(txtHeight.text!)!
let weight = Double(txtWeight.text!)!
if let heightText = txtHeight.text, let height = Double(heightText),
let weightText = txtWeight.text, let weight = Double(weightText) {
// BMI 계산 코드를 여기에 작성
let bmi = weight / ((height / 100) * (height / 100))
resultLabel.text = "BMI: \(String(format: "%.2f", bmi))"
} else {
// 잘못된 입력에 대한 처리 (예: 경고 메시지)
resultLabel.text = "올바른 값을 입력하세요."
}
guard let heightText = txtHeight.text, let height = Double(heightText),
let weightText = txtWeight.text, let weight = Double(weightText) else {
// 잘못된 입력에 대한 처리 (예: 경고 메시지)
resultLabel.text = "올바른 값을 입력하세요."
return
}
// BMI 계산
let bmi = weight / ((height / 100) * (height / 100))
resultLabel.text = "BMI: \(String(format: "%.2f", bmi))"

import UIKit
class ViewController: UIViewController {
// 1. IBOutlet으로 UISegmentedControl과 UILabel 연결
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// 2. UILabel 초기 상태 설정
label.text = "옵션을 선택하세요"
}
// 3. IBAction 연결: 세그먼트 선택 시 호출
@IBAction func segmentChanged(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
label.text = "옵션 1이 선택되었습니다."
label.textColor = .blue
case 1:
label.text = "옵션 2가 선택되었습니다."
label.textColor = .green
case 2:
label.text = "옵션 3이 선택되었습니다."
label.textColor = .red
default:
break
}
}
}


var color = UIColor.white
color = UIColor(displayP3Red: 1.0, green: 0.0,
blue: 0.0, alpha: 0.3)
lblResult.clipsToBounds = true
// 이 코드를 줘야 corner Radius를 줄 수 있다.
blResult.layer.cornerRadius = 10
// 코너 10을 주게 된다.