submit()
메서드로 단어를 제출한 경우 배열에 추가합니다. 추가 한 다음 행을 삽입하기 위해서 테이블뷰의 reloadData()
메서드를 사용하여 테이블뷰 전체를 로드하는 방법이 있지만 한 행만 추가하는 경우에는 insertRows()
를 사용합니다.
예제코드
usedWords.insert(answer, at: 0)
let indexPath = IndexPath(row: 0, section: 0)
tableView.insertRows(at: [indexPath], with: .automatic)
with:
매개변수에는 행이 애니메이션되는 방식을 지정할 수 있습니다.
lowercased()
: 모든 단어를 소문자로 지정합니다.
사용자가 단어를 추가하는 경우 조건
주어진 글자로 단어로 만들 수 있는지? 확인
firstIndex(of:)
하위 문자열이 존재하면 첫번째 위치를 반환하고 그렇지않으면 nil을 반환
remove(at:)
: 문자를 제거
중복된 단어가 있는지? 확인
배열의 contains()
메서드로 단어가 포함되어 있는지 확인합니다.
실제로 유효한 영어단어인지? 확인
func isReal(word: String) -> Bool {
let checker = UITextChecker()
let range = NSRange(location: 0, length: word.utf16.count)
let misspelledRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
return misspelledRange.location == NSNotFound
}
UITextChecker
: 맞춤법 오류를 발견하도록 설계된 iOS 클래스로, 주어진 단어가 진짜인지 아닌지 확인할 수 있습니다.
NSRange
: location
시작위치 length
길이를 지정하여 범위를 지정합니다.
rangeOfMisspelledWord(in:)
: in
문자열, range
스캔할 범위(전체 문자열), startingAt
: 텍스트 검사기가 스캔을 시작해야하는 범위의 지점, wrap
: 범위의 시작에서 시작해야하는지의 여부 language
: 확인해야하는 언어
→ 철자오류가 발견된 위치를 알려주는 NSRange를 반환합니다.
⚠️ UIKit, SpriteKit 또는 기타 Apple 프레임 워크로 작업 할 때 utf16.count를 사용 (이모지같은 경우 2문자로 인식하는 경우가 있기 때문입니다.)
철자가 틀린 경우 경고창을 표시합니다.
let errorTitle: String
let errorMessage: String
let ac = UIAlertController(title: errorTitle, message: errorMessage, preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
return
문을 사용하여 메서드를 즉시 종료할 경우에 사용하기도 합니다.