수업 정리

Swift 에러 정리

Vita500cc 2020. 8. 11. 17:31

swift

1. Cannot assign to value: 'temp' is a 'let' constant

    => let으로 만든 변수에 값을 변경시키려할때 발생하는 오류

    => let으로 만든 변수는 값을 변경시킬 수 없고, var로 만든 변수는 값의 변경이 가능

 

2. Binary operator '+' cannot be applied to operands of type 'Int' and 'Int32'

    => swift는 자료형이 다른 연산을 허가하지 않음

    => 같은 정수형이라도 Int와 Int32의 연산은 불가

    => as를 사용하는 등의 형변환작업을 통해 변환 후, 연산

 

3. error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

    => 해당 자료형을 넘어서는 값을 입력한 경우 발생하는 예외(ex - Overflow)

    => 예시

//Int8은 음수를 포함하여 저장
//-128~+127까지만 저장 가능
var n1 : Int8 = 120
var n2 : Int8 = 8
//print(n1+n2);		//예외발생

//Overflow가 발생하더라도 연산을 수행
var result : Int8 = n1 &+ n2
print(result);		//출력값 : -128

 

4. Use of unresolved operator '++'; did you mean '+= 1'?

    => swift3부터는 증감연산자를 사용할 수 없음

    => ++ -> +=1 or -- -> -=1 로 바꾸어야 함

 

5. Fatal error: Division by zero

    => 0으로 나눗셈을 하는 경우 발생

 

6. 'nil' requires a contextual type

    => swift에서는 일반 자료형 변수에 nil 대입 불가

    => 사용하려는 경우 자료형 뒤에 ? 추가

 

7. Cannot convert value of type 'Any' to expected argument type 'Int'

    => Any의 값을 Int와 연산하는 경우 발생

    => Any는 Java의 Object와 같이 모든 형의 자료형 데이터를 넣을 수 있지만, 사용시에는 강제 형변환 하여 사용해야 함