Type没有成员——App开发项目2,Apple Pie
Type has no member - App Development Project 2, Apple Pie
我正在与 Swift 一起完成应用程序开发,我被困在第二个项目 Apple Pie 的最后一点。
在指南中,它让您创建一个新文件 Game.Swift,并在该文件中创建一个游戏结构。稍后,它会告诉您
Create a computed property called formattedWord within the definition of Game. Here's one way to compute formattedWord:
var formattedWord: String {
var guessedWord = ""
for letter in word.characters {
if guessedLetters.contains(letter) {
guessedWord += "\(letter)"
} else {
guessedWord += "_"
}
}
return guessedWord
}
Now that formattedWord is a property that your UI can display, try using it for the text of currentWordLabel inside of updateUI().
func updateUI() {
correctWordLabel.text = game.formattedWord
scoreLabel.text = "Wins: \(totalWins), Losses: \(totalLosses)"
treeImageView.image = UIImage(named: "Tree \(currentGame.incorrectMovesRemaining)")
}
我完全做到了这一点,我已经检查了代码和指南大约 700 次,更不用说 google 搜索并在 SO 上查看类似(但模糊回答)的问题,但是我仍然无法修复它。我找到了一个解决方案,据说可以更改
correctWordLabel.text = game.formattedWord
到
correctWordLabel.text = currentGame.formattedWord
但这也不起作用。如果有人可以提供帮助,我一定会很感激。我附上了截图,只是为了进一步说明。
View Controller screenshot
struct Game screenshot
我觉得我没有在 struct Game 中正确声明 formattedWord,但我已经按照指南中的说明进行了所有操作。我还在收到
Type 'Game' has no member 'formattedWord'
在视图控制器的第 45 行。请帮忙!
如果您 select 所有代码,并自动缩进(键盘快捷键:ctrl+a,然后 ctrl+i)。您会很快发现问题,因为生成的代码看起来像
struct Game {
var word: String
var incorrectMovesRemaining: Int
var guessedLetters: [Character]
mutating func playerGuessed(letter: Character) {
guessedLetters.append(letter)
if !word.characters.contains(letter) {
incorrectMovesRemaining -= 1
var formattedWord: String {
var guessedWord = ""
for letter in word.characters {
if guessedLetters.contains(letter) {
guessedWord += "\(letter)"
} else {
guessedWord += "_"
}
}
return guessedWord
}
} // <-- This is where your problem is
}
}
在您当前拥有的代码中,您在 playersGuessed
函数内声明了 formattedWord
变量,因此该函数之外的任何内容都无法访问该变量。
您的代码在 Game
结构中的格式不正确。注意第 31->33 行的 3 }
。这是一个很大的危险信号。问题是你没有关闭第 17 行的 if
语句,以及第 15 行的函数。你需要将关闭 }
添加到第 19/20 行。您的 Game
结构应该如下所示。
struct Game {
var word: String
var incorrectMovesRemaining: Int
var guessedLetters: [Character]
mutating func playerGuessed(letter: Character) {
guessedLetters.append(letter)
if !word.characters.contains(letter) {
incorrectMovesRemaining -= 1
} // <-- This is where your problem is
}
var formattedWord: String {
var guessedWord = ""
for letter in word.characters {
if guessedLetters.contains(letter) {
guessedWord += "\(letter)"
} else {
guessedWord += "_"
}
}
return guessedWord
}
}
我正在与 Swift 一起完成应用程序开发,我被困在第二个项目 Apple Pie 的最后一点。
在指南中,它让您创建一个新文件 Game.Swift,并在该文件中创建一个游戏结构。稍后,它会告诉您
Create a computed property called formattedWord within the definition of Game. Here's one way to compute formattedWord:
var formattedWord: String {
var guessedWord = ""
for letter in word.characters {
if guessedLetters.contains(letter) {
guessedWord += "\(letter)"
} else {
guessedWord += "_"
}
}
return guessedWord
}
Now that formattedWord is a property that your UI can display, try using it for the text of currentWordLabel inside of updateUI().
func updateUI() {
correctWordLabel.text = game.formattedWord
scoreLabel.text = "Wins: \(totalWins), Losses: \(totalLosses)"
treeImageView.image = UIImage(named: "Tree \(currentGame.incorrectMovesRemaining)")
}
我完全做到了这一点,我已经检查了代码和指南大约 700 次,更不用说 google 搜索并在 SO 上查看类似(但模糊回答)的问题,但是我仍然无法修复它。我找到了一个解决方案,据说可以更改
correctWordLabel.text = game.formattedWord
到
correctWordLabel.text = currentGame.formattedWord
但这也不起作用。如果有人可以提供帮助,我一定会很感激。我附上了截图,只是为了进一步说明。
View Controller screenshot
struct Game screenshot
我觉得我没有在 struct Game 中正确声明 formattedWord,但我已经按照指南中的说明进行了所有操作。我还在收到
Type 'Game' has no member 'formattedWord'
在视图控制器的第 45 行。请帮忙!
如果您 select 所有代码,并自动缩进(键盘快捷键:ctrl+a,然后 ctrl+i)。您会很快发现问题,因为生成的代码看起来像
struct Game {
var word: String
var incorrectMovesRemaining: Int
var guessedLetters: [Character]
mutating func playerGuessed(letter: Character) {
guessedLetters.append(letter)
if !word.characters.contains(letter) {
incorrectMovesRemaining -= 1
var formattedWord: String {
var guessedWord = ""
for letter in word.characters {
if guessedLetters.contains(letter) {
guessedWord += "\(letter)"
} else {
guessedWord += "_"
}
}
return guessedWord
}
} // <-- This is where your problem is
}
}
在您当前拥有的代码中,您在 playersGuessed
函数内声明了 formattedWord
变量,因此该函数之外的任何内容都无法访问该变量。
您的代码在 Game
结构中的格式不正确。注意第 31->33 行的 3 }
。这是一个很大的危险信号。问题是你没有关闭第 17 行的 if
语句,以及第 15 行的函数。你需要将关闭 }
添加到第 19/20 行。您的 Game
结构应该如下所示。
struct Game {
var word: String
var incorrectMovesRemaining: Int
var guessedLetters: [Character]
mutating func playerGuessed(letter: Character) {
guessedLetters.append(letter)
if !word.characters.contains(letter) {
incorrectMovesRemaining -= 1
} // <-- This is where your problem is
}
var formattedWord: String {
var guessedWord = ""
for letter in word.characters {
if guessedLetters.contains(letter) {
guessedWord += "\(letter)"
} else {
guessedWord += "_"
}
}
return guessedWord
}
}