var myArray : NSMutableArray = ["First", "Second","Third"]
var myArray = ["First", "Second","Third"]
我们何时应该在Swift中使用上面给出的Array类型声明。
答案 0 :(得分:7)
编写Swift代码时,您不需要使用NSMutableArray
。 Swift数组自动桥接到Objective-C NSArray
和NSMutableArray
类型:
let fib = [1, 1, 2, 3, 5, 8, 13] // immutable array bridged to `NSArray`
var friends = ["Pascal", "Jodie", "Craig"] // mutable array bridged to `NSMutableArray`
当您使用Objective-C编写的Cocoa API时,将完成桥接。反之亦然,如果您因调用此类API而获得NSMutableArray
,则可以将其分配给Swift Array
,只要它是var
。< / p>
作为桥接如何工作的一个例子,让我们假设UIKit的UITabViewController
仍然是原生的Objective-C API(我不知道它是否是案件与否)。然后在Objective-C中,您可以获得@property viewControllers
NSArray
:
NSArray<__kindof UIViewController *> *rootViewControllers;
rootViewControllers = [myTabViewController viewControllers];
但是在Swift中你可以将这个属性分配给一个常规数组(我明确地给它一个类型,但实际上并不需要类型推断):
let rootViewControllers: [UIViewController]?
rootViewControllers = myTabViewController.viewControllers
相反,您可以将UIViewControllers
的Swift数组传递给setViewControllers
方法(在Objective-C中期望NSArray
):
func buildInitialViewControllers() -> [UIViewController] { ... }
let rootViewControllers = self.buildInitialViewControllers()
myTabViewController.setViewControllers(rootViewControllers, animated=True)
答案 1 :(得分:0)
一般情况下,我们使用常量let c =
和变量var v: [String]
但是当你进入NSSortDescriptor
&amp;在这种情况下执行排序你必须使用NSArray
&amp; NSMutableArray
它实现了功能
open func sortedArray(using sortDescriptors: [NSSortDescriptor]) -> [Any] // returns a new array by sorting the objects of the receiver
open func sort(using sortDescriptors: [NSSortDescriptor]) // sorts the array itself