gpt4 book ai didi

ios - 为什么我们应该在 Swift 中使用 "NSMutableArray"或 "NSMutableDictionary"?

转载 作者:行者123 更新时间:2023-11-28 09:35:27 24 4
gpt4 key购买 nike

  1. var myArray : NSMutableArray = ["第一", "第二","第三"]

  2. var myArray = ["First", "Second","Third"]

我们什么时候应该在 Swift 中使用上述给定类型的数组声明。

最佳答案

编写 Swift 代码时不需要使用 NSMutableArray。 Swift 数组自动桥接到 Objective-C NSArrayNSMutableArray 类型:

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,只要它是 var,就可以将其分配给 Swift Array

作为桥接如何工作的示例,让我们假设 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)

关于ios - 为什么我们应该在 Swift 中使用 "NSMutableArray"或 "NSMutableDictionary"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48298478/

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