您好,StackOverflow人员,
我最近开始学习iOS开发。我已经有一点Java和Python的经验,但是Swift对我来说是一种全新的语言。
我试图将动物类的经典示例应用于理解游乐场环境,语法和[逻辑?]。
2个主要问题:
关于错误(Animal Init的最后一行),我想我明白为什么我在这里收到错误,但是我对如何解决它感到非常困惑?我需要做些可选的事情吗?还是我完全误解了MVC格式?我试图在init内移动该方法,但是在引用Zoo变量时遇到了问题...如果在类定义之前移动Zoo变量,则会出现Animal错误。
是否必须为要打印的类创建toString类型的方法 Swift中正常的东西?我试图进行搜索,但是不断 找到了用于结构而不是用于类的资源...所以我有点 这里也很困惑。
预先感谢<3
代码如下:
import UIKit
print("Welcome to the Animal Playground.")
//Simple Animal Class
class Animal {
var name : String
var species : String
var age : Int
init(name:String, species:String, age:Int) {
self.name = name
self.species = species
self.age = age
addAnimaltoZoo(animal: self) **//Use of unresolved identifier 'addAnimaltoZoo'**
}
}
//Everything afterward would be part of the AppController
var zoo = [Int: Animal]()
var animalCounter = 0;
func addAnimaltoZoo(animal: Animal) {
zoo[animalCounter] = animal
animalCounter += 1
}
var Tom = Animal(name: "Tom", species: "Cat", age: 105)
var Jerry = Animal(name: "Jerry", species: "Mouse", age: 108)
for (animalID, animalDetails) in zoo {
print("\(animalID): \(animalDetails)")
}
打印:
Welcome to the Animal Playground.
0: __lldb_expr_4.Animal
1: __lldb_expr_4.Animal
答案 0 :(得分:0)
您拥有类class Animal
,并且正在调用addAnimalToZoo(animal:Animal)
,但是,它不在Animal
范围内。请注意,{ }
的{{1}}括号在初始化class Animal
之前已关闭。因此,addAnimalToZoo(animal:Animal)
无法看到此参考。您可以,但是可以这样做
class Animal
注意:由于//Everything afterward would be part of the AppController
var zoo = [Int: Animal]()
var animalCounter = 0;
func addAnimaltoZoo(animal: Animal) {
zoo[animalCounter] = animal
animalCounter += 1
}
var Tom = Animal(name: "Tom", species: "Cat", age: 105)
var Jerry = Animal(name: "Jerry", species: "Mouse", age: 108)
addAnimalToZoo(animal: Tom)
addAnimalToZoo(animal:Jerry
for (animalID, animalDetails) in zoo {
print("\(animalID): \(animalDetails)")
}
和Animal
并不相同,因此,Zoo
不应位于addAnimalToZoo(animal:Animal)
中。
关于class Animal
,我不太确定那里发生了什么或正在打印什么。看来您正在打印animalDetails
,您可以从enumerated() for Array看到它。
如果要打印动物变量,或者我要做什么,也许有更好的方法是创建一个方法并调用它。
zoo.enumerated()
然后称呼
class Animal {
var name : String
var species : String
var age : Int
init(name:String, species:String, age:Int) {
self.name = name
self.species = species
self.age = age
}
func printAnimalDetails() {
print("Age: \(self.age) -- Species: \(self.species) -- Name: \(self.name)")
}
}