SwiftUI 高级之使用generics将复制粘贴代码打包

SwiftUI 高级之使用generics创建一个范型struct

目标

将经常复制粘贴的代码打包成可以处理某一类问题的通用代码

代码

import UIKit
//定义协议规范Model函数,用于范型调用
protocol PageModelProtocal:Identifiable,Hashable{
    associatedtype T
    static func row_page() ->[T]
}
//定义个范型class用于管理页面和更新数据
class PageMgrG:NSObject{
    var page = 0
    var pageSize = 0
    
    func next() -> [T]{
        return   T.row_page() as! [T]
    }
}

// 遵守协议的struct
struct Author:PageModelProtocal {
    var id = UUID()
    var name = ""
    
    static func row_page() ->[Self]{
        return [
            Author(name:"tom"),
            Author(name:"jack"),
            Author(name:"mary")
        ]
    }
}
// 遵守协议的另外一个struct
struct Writer:PageModelProtocal {
    var id = UUID()
    var name = ""
    var country = ""
    
    static func row_page() ->[Self]{
        return [
            Writer(name:"tom",country:"China"),
            Writer(name:"jack",country:"USA"),
            Writer(name:"mary",country:"JP")
        ]
    }
}

//实例化
var pageMgrA = PageMgrG()
print(pageMgrA.next())
var pageMgrB = PageMgrG()
print(pageMgrB.next())

最终效果

同样的代码完成不同类型的处理
SwiftUI 高级之使用generics将复制粘贴代码打包_第1张图片

参考文献

更多SwiftUI教程和代码关注专栏

https://www.jianshu.com/c/7b3...

你可能感兴趣的:(ios,swift)