我是Swift的新手,特别是在这方面遇到了一些麻烦。附件是我需要作为项目的一部分运行的一些代码。细节结束了。
class Screen:DataSource {
var items:[String]=[]
func run(){
let lv = TableView()
items = ["John","Paul","George","Ringo"]
let ds = self
lv.dataSource=ds
lv.drawList()
}
}
class TableView {
// This class displays a list given a DataSource
var dataSource:DataSource?
init (){
self.dataSource=nil
}
func drawList(){
for(var i=0;i<dataSource!.getSize();i++) {
print("\(dataSource!.getItem(at:i))")
print("--------------------------")
}
}
}
protocol DataSource {
func getSize()->Int
func getItem(at pos:Int)->String
}
let screen = Screen()
screen.run()
不改变&#34;运行&#34;功能/方法,我需要打印它:
John
--------------------------
Paul
--------------------------
George
--------------------------
Ringo
--------------------------
我不确定在我的Screen类中要修改什么。这就是我到目前为止所做的:
class Screen: DataSource {
var items: [String]=[]
func run() {
let lv = TableView()
items = ["John","Paul","George","Ringo"]
let ds = self
lv.dataSource=ds
lv.drawList()
}
//NEED HELP HERE
}
任何提示将不胜感激。
答案 0 :(得分:1)
使用扩展程序使Screen
符合DataSource
:
class Screen {
var items:[String]=[]
func run(){
let lv = TableView()
items = ["John","Paul","George","Ringo"]
let ds = self
lv.dataSource=ds
lv.drawList()
}
}
extension Screen: DataSource {
func getSize() -> Int { return items.count }
func getItem(at index:Int) -> String { return items[index] }
}
您也可以在类本身上放置DataSource
一致性和方法,但在扩展中执行此操作是组织班级成员的常用方式。