嗨,StackOverflow人们,
我最近开始学习iOS开发。我已经有一点Java和Python的经验,但是Swift对我来说是一种全新的语言。
我试图将动物类的经典示例应用于理解游乐场环境,语法和[逻辑]。
2个主要问题:
关于错误(Animal Init的最后一行),我想我明白为什么我在这里收到错误,但是我对于如何解决它感到非常困惑?我需要做些可选的事情吗?还是我完全误解了MVC格式?我试图在init中移动该方法,但是在引用Zoo变量时遇到了问题...如果在类定义之前移动Zoo变量,则Animal会出错。
我是否需要为类打印创建toString类型的方法
Swift正常吗?我尝试进行搜索,但是不断
找到了用于结构而不是用于类的资源...所以我有点
这里也很困惑。
在此先感谢
代码如下:
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
最佳答案
您具有类class Animal
并正在调用addAnimalToZoo(animal:Animal)
,但是,它不在Animal
范围内。请注意,在初始化{ }
之前,关闭了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
,我不确定该发生什么或正在打印什么。您似乎正在打印zoo.enumerated()
,您可以从enumerated() for Array中看到。如果要打印动物变量,或者应该做的事,可能应该有一个更好的方法,就是创建一个方法并调用它。
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)")
}
}
然后叫它
for (index, animal) in zoo.enumerated() {
print("\(index)", terminator: "") //The terminator allows it to NOT create a new line on the next print statement.
animal.printAnimalDetails()
}
关于swift - Swift(操场):使用 Unresolved 标识符'addAnimaltoZoo',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54058206/