sub*_*272 0 arrays nsmutablearray ios swift
var myArray : NSMutableArray = ["First", "Second","Third"]
var myArray = ["First", "Second","Third"]
我们什么时候应该在Swift中使用上面给出的Array类型声明.
NSMutableArray编写Swift代码时不需要使用.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`
Run Code Online (Sandbox Code Playgroud)
当您使用Objective-C编写的Cocoa API时,将完成桥接.反之亦然,如果你得到一个NSMutableArray调用这样一个API的结果,你可以将它分配给一个Swift Array,只要它是一个var.
作为桥接如何工作的一个例子,让我们假设UIKit UITabViewController本身仍然是一个Objective-C API(我不知道是否是这种情况).然后在Objective-C中,你可以获得它@property viewControllers的NSArray:
NSArray<__kindof UIViewController *> *rootViewControllers;
rootViewControllers = [myTabViewController viewControllers];
Run Code Online (Sandbox Code Playgroud)
但是在Swift中,您可以将此属性分配给常规数组(我明确地给它一个类型,但实际上并不需要类型推断):
let rootViewControllers: [UIViewController]?
rootViewControllers = myTabViewController.viewControllers
Run Code Online (Sandbox Code Playgroud)
相反,您可以将Swift数组传递UIViewControllers给该setViewControllers方法(在Objective-C期望的方法中NSArray):
func buildInitialViewControllers() -> [UIViewController] { ... }
let rootViewControllers = self.buildInitialViewControllers()
myTabViewController.setViewControllers(rootViewControllers, animated=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |