首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SwfitUI创建一个功能类似于@已发布变量的函数

SwfitUI创建一个功能类似于@已发布变量的函数
EN

Stack Overflow用户
提问于 2021-03-29 07:36:56
回答 1查看 46关注 0票数 1

我有一个类,它有两个已发布的变量:

代码语言:javascript
运行
复制
class Controller: ObservableObject {
    @Published var myArray: Array<Int>: [1,2,3,4,5]
    @Published var currIndex: Int = 0


    func currItem() -> Int {
        return myArray[curIndex]
    }
}

我希望我的观点是订阅函数"currItem“而不是currIndex变量,是否有一种优雅的方法来实现它?在不订阅函数的情况下,我需要编写一些样板代码:

代码语言:javascript
运行
复制
struct myView: View {
    var controller: Controller = Controller()
    var body: some View {
        Text(controller.myArray[controller.currIndex]) // <-- Replace this with controller.currItem()        

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-29 07:49:04

你可以做得更好,就像这样:

代码语言:javascript
运行
复制
import SwiftUI

struct ContentView: View {
    
    @StateObject var controller: Controller = Controller()
    
    var body: some View {

        Text(controller.currItem?.description ?? "Error!")

    }
}

代码语言:javascript
运行
复制
class Controller: ObservableObject {
    
    @Published var myArray: Array<Int> =  [1,2,3,4,5]
    @Published var currIndex: Int? = 0
    
    var currItem: Int? {
        
        get {
            
            if let unwrappedIndex: Int = currIndex {
                
                if myArray.indices.contains(unwrappedIndex) {

                    return myArray[unwrappedIndex]

                }
                else {

                    print("Error! there is no such index found!")
                    return nil

                }
                
            }
            else {
                
                print("Error! you did not provide a value for currIndex!")
                return nil
                
            }
            
        }
        
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66850308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档