func loadLevel() {
var clueString = ""
var solutionString = ""
var letterBits = [String]()
if let levelFileURL = Bundle.main.url(forResource: "level\(level)". withExtension: "txt") {
if let levelContents = try? String(contentsOf: levelFileURL) {
var lines = levelContents.components(separatedBy: "\n")
lines.shuffle()
for (index, line) in lines.enumerated() {
let parts = line.components(seperatedBy: ": ")
let answer = parts[0]
let clue = parts[1]
clueString += "\(index + 1). \(clues)\n"
let solutionWord = answer.replacingOcurrences(of: "|", with: "")
solutionString += "\(solutionWord.count) letters\n"
solutions.append(solutionWord)
let bits = answer.components(seperatedBy: "|")
letterBits += bits
}
}
}
}
: (n,x) 쌍으로 된 시퀀스를 반환한다. n은 0에서 시작하는 연속적인 정수를 나타내고, x는 시퀀스의 element를 나타낸다.
for (n,c) in "Swift".enumerate() {
print("\(n): \(c)")
}
// prints
// "0: S"
// "1: w"
// "2: i"
// "3: f"
// "4: t"
: 매개변수 of의 모든 인스턴스가 매개변수 with로 바뀐다.
ex) "HA|UNT|ED" => "HAUNTED"
cluesLabel.text = cluesString.trimmingCharacters(in: .whitespacesAndNewlines)
answersLabel.text = solutionString.trimmingCharacters(in: .whitespacesAndNewlines)
letterBits.shuffle()
if letterBits.count == letterButtons.count {
for i in 0..<letterButtons.count {
letterButtons[i].setTitle(letterBits[i], for: .normal)
}
}
: 문자열의 시작과 끝에서 지정한 모든 문자를 제거한다.
@objc func submitTapped(_ sender: UIButton) {
guard let answerText = currentAnswer.text else { return }
if let solutionPosition = solutions.firstIndex(of: answerText) {
activatedButtons.removeAll()
var splitAnswers = answersLabel.text?.components(seperatedBy: "\n")
splitAnswers?[solutionPosition] = answerText
answertsLabel.text = splitAnswers?.joined(seprator: "\n")
currentAnswer.text = ""
score += 1
if score % 7 == 0 {
let ac = UIAlertController(title: "Well done!", message: "Are you ready for the next level?", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Let's go!", style: .default, handler: levelUp))
present(ac, animated: true)
}
}
}
: 집합 안에서 of 매개변수의 요소와 일치하는 값의 위치를 알려줌
var students = ["Ben", "Ivy", "Jordel", "Maxime"]
if let i = students.firstIndex(of: "Maxime") {
students[i] = "Max"
}
print(students)
// prints ["Ben", "Ivy", "Jordel", "max"]
firstIndext(of:) - Apple.document
: 해당 시퀀스의 연결된 요소를 반환하고 각 요소 사이에 지정된 구분 기호를 삽입한다.
let nestedNumbers = [[1,2,3], [4,5,6], [7,8,9]]
let joined = nestedNumbers.joined(seperator: [-1,-2])
print(Array(joined))
//prints "[1,2,3,-1,-2,4,5,6,-1,-2,7,8,9]"
joined(seprator: )- Apple.document
: 프로퍼티가 변경될 떄마다 코드를 실행시키는 프로퍼티 옵저버이다.
var score = 0 {
didSet {
scoreLabel.text = "Score: \(score)"
}
}