无法在 Swift 的 ViewController class 中创建子 class 的对象
Unable to create a subclass's object in Swift's ViewController class
我创建了一个名为 'Treasure.swift' 的 swift class 并在同一个文件中创建了它的子 class,如下所示:
import Foundation
class Treasure
{
let what: String
let latitude: Double
let longitude: Double
init ( what: String, latitude: Double, longitude: Double)
{
self.what = what
self.latitude = latitude
self.longitude = longitude
}
class HistoryTreasure: Treasure
{
let year: Int
init(what: String, year: Int, latitude: Double, longitude: Double)
{
self.year = year
super.init(what: what, latitude: latitude, longitude: longitude)
}
}
然后我创建一个'ViewController.swift'class并添加以下代码:
import UIKit
class ViewController: UIViewController
{
var treasures : [Treasure] = []
override func viewDidLoad()
{
super.viewDidLoad()
self.treasures = [HistoryTreasure()]
}
}
问题是,我创建了一个 ViewController class 'treasures' 的 属性 并将其声明为 'Treasure' 的数组类型。当我像这样在上面的数组中插入对象时:“self.treasures = [Treasure(what: "hi", longitude: -37, latitude: 78),]
”,它运行良好,但是当我尝试插入类型为 'HistoryTreasure' 的对象时([=38= 的子class ]) ,然后它显示我们的错误:"Use of unresolved identifier 'HistoryTreasure'".
而且这个 'ViewController' class 无法独立识别 'Historytreasure' class,即无法导入它。请帮助我理解以上几点。
在@nhgrif 的评论的帮助下,我在上面的代码中发现了错误。第一个问题是错误的,我正在创建 'Treasure' class 的嵌套 class 'HistoryTreasure'。但是我想做一个超级class'Treasure'的简单子class(历史宝藏)。所以我在我的代码中做了以下更改(在 'HistoryTreasure' class 开始之前关闭 'Treasure' class 的大括号):
class Treasure : NSObject
{
let what: String
let latitude: Double
let longitude: Double
init ( what: String, latitude: Double, longitude: Double)
{
self.what = what
self.latitude = latitude
self.longitude = longitude
}
}
class HistoryTreasure: Treasure
{
let year: Int
init(what: String, year: Int, latitude: Double, longitude: Double)
{
self.year = year
super.init(what: what, latitude: latitude, longitude: longitude)
}
}`
现在我的代码 运行 非常好并且能够生成和插入子 class 'HistoryTreasure' 的对象到 'Treasure' 类型的数组中ViewControllerclass
self.treasures = [HistoryTreasure(what: "hi", year: 1992, latitude: -37, longitude: 420)]
我创建了一个名为 'Treasure.swift' 的 swift class 并在同一个文件中创建了它的子 class,如下所示:
import Foundation class Treasure { let what: String let latitude: Double let longitude: Double init ( what: String, latitude: Double, longitude: Double) { self.what = what self.latitude = latitude self.longitude = longitude } class HistoryTreasure: Treasure { let year: Int init(what: String, year: Int, latitude: Double, longitude: Double) { self.year = year super.init(what: what, latitude: latitude, longitude: longitude) } }
然后我创建一个'ViewController.swift'class并添加以下代码:
import UIKit class ViewController: UIViewController { var treasures : [Treasure] = [] override func viewDidLoad() { super.viewDidLoad() self.treasures = [HistoryTreasure()] } }
问题是,我创建了一个 ViewController class 'treasures' 的 属性 并将其声明为 'Treasure' 的数组类型。当我像这样在上面的数组中插入对象时:“
self.treasures = [Treasure(what: "hi", longitude: -37, latitude: 78),]
”,它运行良好,但是当我尝试插入类型为 'HistoryTreasure' 的对象时([=38= 的子class ]) ,然后它显示我们的错误:"Use of unresolved identifier 'HistoryTreasure'".而且这个 'ViewController' class 无法独立识别 'Historytreasure' class,即无法导入它。请帮助我理解以上几点。
在@nhgrif 的评论的帮助下,我在上面的代码中发现了错误。第一个问题是错误的,我正在创建 'Treasure' class 的嵌套 class 'HistoryTreasure'。但是我想做一个超级class'Treasure'的简单子class(历史宝藏)。所以我在我的代码中做了以下更改(在 'HistoryTreasure' class 开始之前关闭 'Treasure' class 的大括号):
class Treasure : NSObject { let what: String let latitude: Double let longitude: Double init ( what: String, latitude: Double, longitude: Double) { self.what = what self.latitude = latitude self.longitude = longitude } } class HistoryTreasure: Treasure { let year: Int init(what: String, year: Int, latitude: Double, longitude: Double) { self.year = year super.init(what: what, latitude: latitude, longitude: longitude) } }`
现在我的代码 运行 非常好并且能够生成和插入子 class 'HistoryTreasure' 的对象到 'Treasure' 类型的数组中ViewControllerclass
self.treasures = [HistoryTreasure(what: "hi", year: 1992, latitude: -37, longitude: 420)]