gpt4 book ai didi

swift - 如何在 Swift 中声明特定类型的 NSArray?

转载 作者:搜寻专家 更新时间:2023-11-01 06:35:48 28 4
gpt4 key购买 nike

我需要通过引用传递一个数组(因为被调用的函数会修改它,并且更改应该反射(reflect)在调用站点)。由于 Swift 数组是按值传递的,而 NSArrays 是按引用传递的,因此我尝试将函数声明为:

func save(_ photos: NSMutableArray<Photo>) {

但是 Xcode 说我不能专门化非通用类型 NSMutableArray。所以我必须这样做:

func save(_ photos: NSMutableArray) {

这会失去类型安全性。有没有一种方法可以让我同时拥有类型安全和按值传递?

最佳答案

您不能专门化 NSMutableArray — 只有 Objective-C 可以做到(具有讽刺意味,不是吗?)。但是,您实际上并不需要。

相反,只需将 photos 声明为 inout [Photo]。您仍将按值传递,但您将能够将修改后的数组写回到它的来源。

简单的例子:

var originalArray = [1,2,3]
func modifyArray(_ array: inout [Int]) {
array = Array(array.dropFirst())
}
modifyArray(&originalArray)
originalArray // [2,3]

关于swift - 如何在 Swift 中声明特定类型的 NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com