Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 如何创建一个空的可选数组?_Arrays_Swift_Optional - Fatal编程技术网

Arrays 如何创建一个空的可选数组?

Arrays 如何创建一个空的可选数组?,arrays,swift,optional,Arrays,Swift,Optional,Swift 5/Xcode 12.4 我知道如何初始化空数组: var myarray = [String]() 我知道如何初始化可选字符串: var mystring:String? = "" 如何创建一个空的可选数组并初始化它?我不希望内容是可选的,但是数组本身是可选的,因此我可以将其设置为/检查nil 建议使用var myArray=[String]?(),但这只是显示了“调用初始值设定项时没有精确匹配”错误 var myarray:[字符串]?=()还显示一个错误

Swift 5/Xcode 12.4

我知道如何初始化空数组:

var myarray = [String]()
我知道如何初始化可选字符串:

var mystring:String? = ""
如何创建一个空的可选数组并初始化它?我不希望内容是可选的,但是数组本身是可选的,因此我可以将其设置为/检查
nil

建议使用
var myArray=[String]?()
,但这只是显示了“调用初始值设定项时没有精确匹配”错误

var myarray:[字符串]?=()
还显示一个错误(“无法将类型“()”的值转换为指定的类型“[String]?”)。

如果确实要执行此操作:

var myArray: [String]? = []
数组文字由
[]
表示。不是
()
()
是一个空元组

然而,正如人们在评论中提到的,这是一种反模式。如果“空数组”和“nil”对代码没有什么不同的含义,那么只需使用常规的
[String]
,并使用空数组表示“无”


同样从评论中可以看出,您似乎正试图以编写Java代码的方式编写Swift代码。我建议你不要那样做。在罗马时,要像罗马人那样做:)

你的意思是
var myarray:[String]?=[]
可选
是Swift中的反模式。您可以使用空数组表示缺少值,不需要将其包装在
可选的
@Neph中。在Java中,您可以使用null检查,因为所有内容(除了原语)都是引用类型,因此它可以为null。但是,在Swift中,只有选项可以是
nil
,并且您应该只对可以有值或没有值的类型使用可选项,
nil
表示缺少值。但是,在集合的情况下,可以使用空集合来表示没有价值,因此不鼓励使用可选集合,因为它们只是使界面复杂化,没有任何好处(在大多数情况下)。“继续使用它,因为我已经习惯了它”也是一种反模式。不仅仅是在编程方面!“你自己”确实可以以任何方式编程“以你想要的方式编译和运行”。但是一旦你有了一个团队和可重用性,你就进入了完全与标准有关的现代软件工程世界。假设你想出了一些很棒的东西(iOS中的一个很棒的控件,一些很棒的AI例程,一个很棒的图像处理库,或者其他什么),然后你把它放在github上,它变得很受欢迎。你写的任何“奇怪”的东西(甚至不提奇怪的格式)都是。。。。。。。。。。。瞬间改变,也就是说被其他人修正了。谢谢你的回答。空数组和nil数组在我的代码中是两个不同的东西:如果它是空的,它只是还没有被填充(但是有数据),如果它是nil,那么它永远不能被填充,因为它的数据根本不存在。我需要一种方法来区分它,一个可选的数组是最好的方法,它不需要在x个不同的点上添加和设置额外的
bool