Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 如何在swift中实现可选数组结构?_Arrays_Swift - Fatal编程技术网

Arrays 如何在swift中实现可选数组结构?

Arrays 如何在swift中实现可选数组结构?,arrays,swift,Arrays,Swift,我想实现一个数组结构,它可以将单个元素标记为选中。因此,可以轻松访问该元素 我正在围绕Arraystruct创建一个包装器类。有没有什么好方法可以将Array方法委托给我的SelectableArray的内部数组 还是有其他更好的方法 class SelectableArray<Element: Comparable> { let array = Array<Element>() private var selectedIndex: Int? = .Non

我想实现一个数组结构,它可以将单个元素标记为选中。因此,可以轻松访问该元素

我正在围绕
Array
struct创建一个包装器类。有没有什么好方法可以将
Array
方法委托给我的
SelectableArray
的内部数组

还是有其他更好的方法

class SelectableArray<Element: Comparable> {
    let array = Array<Element>()
    private var selectedIndex: Int? = .None

    var selectedElement: Element? {
        guard let index = selectedIndex else {
            return .None
        }
        return array[index]
    }

    func select(index: Int) {
        selectedIndex = array.indices.contains(index) ? index : .None
    }

    func select(element: Element) {
        selectedIndex = array.indexOf(element)
    }
}
class SelectableArray{
让数组=数组()
私有变量selectedIndex:Int?=.None
变量selectedElement:元素{
guard let index=selectedIndex else{
返回,无
}
返回数组[索引]
}
函数选择(索引:Int){
selectedIndex=array.Indexs.contains(索引)?索引:。无
}
功能选择(元素:元素){
selectedIndex=array.indexOf(元素)
}
}

只需为包装类创建一个
append
方法,并将
数组
let
更改为
变量

class SelectableArray<Element: Comparable> {
    var array = Array<Element>()
    private var selectedIndex: Int? = .None

    // other functions...

    func append(element: Element) {
        self.array.append(element)
    }
}
class SelectableArray{
var数组=数组()
私有变量selectedIndex:Int?=.None
//其他功能。。。
func追加(元素:元素){
self.array.append(元素)
}
}

您能否提供一些您当前拥有的代码,以便更容易理解您试图实现的功能。可能不会。您必须编写自己的方法。但是,您可以创建子类
NSArray
。或者您可以尝试
扩展
已添加代码但尚未完全实现的
数组
结构。需要添加逻辑以在数组更改时更新索引。问题是,当我想要修改数组时,我需要类似于
selectableArray.array.append(…)
的代码。我只想
selectableArray.append(…)
。如何将所有
Array
方法委托给我的
Wrapper
?我希望这个类的行为与vanilla
Array
完全一样,并具有跟踪所选元素的附加功能。你不能!Swift中的数组是结构,因此不能继承它。如果扩展结构,则不允许添加新的存储属性(
selectedIndex
)。实现您经常使用的功能,如
附加
下标
。其余部分必须通过
数组
属性进行访问。我应该限定,如果您愿意返回Objective,您可以继承
NSMutableArray
并将
selectedIndex
添加为关联对象