Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 修改类以显示特定输出_Swift - Fatal编程技术网

Swift 修改类以显示特定输出

Swift 修改类以显示特定输出,swift,Swift,我是新来的斯威夫特和有点麻烦,特别是这一点。附件是我需要作为项目的一部分运行的一些代码。细节在最后 class Screen:DataSource { var items:[String]=[] func run(){ let lv = TableView() items = ["John","Paul","George","Ringo"] let ds = self lv.dataSource=ds

我是新来的斯威夫特和有点麻烦,特别是这一点。附件是我需要作为项目的一部分运行的一些代码。细节在最后

 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()
我不确定在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
}

任何提示都将不胜感激

使用扩展使
屏幕
符合
数据源

 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] }
}

您也可以将
数据源
一致性和方法放在类本身上,但在扩展中这样做是组织类成员的常见方式。

您需要在
屏幕
类中编写
getSize()
getItem()
的代码。“我需要让它打印此”现在打印什么?谢谢!如何在类中编写getSize()和getItem()的代码?(Swift新手)感谢您的回答,但我正在编写的代码部分必须放在Screen类内部。有没有一种方法可以在没有扩展名的情况下将你的答案包含在我的类中?正如我所说的,你可以把方法放在类本身中。
 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] }
}