1. 문제 상황

 

popLast를 활용해 아래와 같은 코드로 array 맨 뒤 데이터를 삭제할 경우, 코드는 작동하지만 warning 문구가 필자를 불편하게 만들었습니다.

 

// For Guide Message Print
let Intro_message = "\n   <<< Explain Message : "
let Last_message = " >>>"

var languages = ["Swift", "Objective-C", "Kotlin", "Python"]

print("\(Intro_message)Test Printing\(Last_message)")
print(languages)

print("\(Intro_message)(popLast) 맨 뒤에 데이터 출력하며 삭제하기\(Last_message)")
languages.popLast()
print(languages)

 

심지어 여러번 popLast를 날리면 실행수만큼 warning이 발생합니다.

이것은 참을 수 없습니다. 이 글을 보고 있는 당신처럼.

// For Guide Message Print
let Intro_message = "\n   <<< Explain Message : "
let Last_message = " >>>"

var languages = ["Swift", "Objective-C", "Kotlin", "Python"]

print("\(Intro_message)Test Printing\(Last_message)")
print(languages)

print("\(Intro_message)(popLast) 맨 뒤에 데이터 출력하며 삭제하기\(Last_message)")
//var result_of_pop = languages.popLast()
languages.popLast()
languages.popLast()
languages.popLast()
print(languages)

 

 

 

 

 

2. 문제 원인 및 해결 방법 개요

 

popLast()는 단순 데이터 삭제를 위한 것이 아니라, 데이터를 뽑아내는 것까지를 고려해 설계되었으므로, 만약 이런 문구가 발생한다면 popLast() 대신 removeLast()를 사용하는 것이 좋습니다.

아니면 결과값을 활용하는 방법으로 변경해도 좋습니다.

 

 

 

 

 

3.  popLast() 대신 removeLast()를 활용해 해결하기

 

// For Guide Message Print
let Intro_message = "\n   <<< Explain Message : "
let Last_message = " >>>"

var languages = ["Swift", "Objective-C", "Kotlin", "Python"]

print("\(Intro_message)Test Printing\(Last_message)")
print(languages)

print("\(Intro_message)(popLast) 맨 뒤에 데이터 출력하며 삭제하기\(Last_message)")
languages.removeLast()
print(languages)

poplast_warning_usingremovelast.swift
0.00MB

 

 

 

 

 

4. popLast() 결과값을 활용해 해결하기

 

// For Guide Message Print
let Intro_message = "\n   <<< Explain Message : "
let Last_message = " >>>"

var languages = ["Swift", "Objective-C", "Kotlin", "Python"]

print("\(Intro_message)Test Printing\(Last_message)")
print(languages)

print("\(Intro_message)(popLast) 맨 뒤에 데이터 출력하며 삭제하기\(Last_message)")
var result_of_pop = languages.popLast()
print(result_of_pop!)
print(languages)

poplast_warning.swift
0.00MB

 

 

+ Recent posts