Swift 如何在函数字段中使用父级?

Swift 如何在函数字段中使用父级?,swift,function,class,field,swiftui,Swift,Function,Class,Field,Swiftui,我有以下代码(MenuItem用于SwiftUI汉堡菜单,我在循环中使用MenuItem数组): 我需要在函数字段“action”中使用字段“index”、“imagename”和“title”。我怎么做 注意:对不起,我的英语不好)这里有一个可能的解决方案(用Xcode 11.2测试) import Foundation public class MenuItem { var title: String var imagename: String var index:

我有以下代码(MenuItem用于SwiftUI汉堡菜单,我在循环中使用MenuItem数组):

我需要在函数字段“action”中使用字段“index”、“imagename”和“title”。我怎么做

注意:对不起,我的英语不好)

这里有一个可能的解决方案(用Xcode 11.2测试)

import Foundation

public class MenuItem
{
    var title: String
    var imagename: String
    var index: Int
    var action: () -> ()

    init(title: String, index: Int, action: @escaping () -> ())
    {
        self.title = title
        self.index = index
        self.action = action
        self.imagename = ""
    }

    convenience init(title: String, image: String, index: Int, action: @escaping () -> ())
    {
        self.init(title: title, index: index, action: action)
        self.imagename = image
    }

    func getTitle() -> String
    {
        return self.title
    }
}

    //need in output "ItemTitle: Title 1"
var menuitems = [
        MenuItem(title: "Title 1", index: 0, action: {
            print("ItemTitle: \(menuitems[self.index])")//i can't compile it
        }),
        MenuItem(title: "Title 2", index: 1, action: {
            print("ItemTitle: \(MenuItem.self.title)")//i can't compile it!
        }),
        MenuItem(title: "Title 3", index: 2, action: {
            print("ItemTitle: \(self.getTitle())")//i can't compile it!
    })]
public class MenuItem
{
    var title: String
    var imagename: String
    var index: Int
    var action: (MenuItem) -> ()

    init(title: String, index: Int, action: @escaping (MenuItem) -> ())
    {
        self.title = title
        self.index = index
        self.action = action
        self.imagename = ""
    }

    convenience init(title: String, image: String, index: Int, action: @escaping (MenuItem) -> ())
    {
        self.init(title: title, index: index, action: action)
        self.imagename = image
    }

    func getTitle() -> String
    {
        return self.title
    }
}

    //need in output "ItemTitle: Title 1"
var menuitems = [
        MenuItem(title: "Title 1", index: 0, action: { item in
            print("ItemTitle: \(item.index)")//i can't compile it
        }),
        MenuItem(title: "Title 2", index: 1, action: { item in
            print("ItemTitle: \(item.index)")//i can't compile it!
        }),
        MenuItem(title: "Title 3", index: 2, action: { item in
            print("ItemTitle: \(item.getTitle())")//i can't compile it!
    })]