gpt4 book ai didi

ios - 无法将类型 '[AnyObject]' 的值分配给类型 '[UIViewController]?' 的值

转载 作者:行者123 更新时间:2023-11-28 21:39:12 26 4
gpt4 key购买 nike

我有一个返回 NSArray 的函数,如下所示

func papulateViewControllers() -> NSArray{

let chatVC = ChatsVC(nibName:"ChatsVC", bundle:NSBundle.mainBundle())
let contactVC = ContactsVC(nibName:"ContactsVC", bundle:NSBundle.mainBundle())
let notificationVC = NotificationsVC(nibName:"NotificationsVC", bundle:NSBundle.mainBundle())

let chatNav = UINavigationController()
chatNav.viewControllers = [chatVC]

let contactNav = UINavigationController()
contactNav.viewControllers = [contactVC]

let notifNav = UINavigationController()
notifNav.viewControllers = [notificationVC]

return [chatNav, contactNav, notifNav]
}//end papulateViewControllers

我是这样调用这个方法的

var tabs = UITabBarController()
tabs.viewControllers = papulateViewControllers() as [AnyObject]

但是我收到了这个错误无法将“[AnyObject]”类型的值分配给“[UIViewController]”类型的值?

需要建议来修复此错误,并优化上述功能。

最佳答案

你不应该在 Swift 中使用 NSArray,使用原生数组。 NSArray 没有强类型推断,因为它们为您提供了 AnyObject,Swift 数组只包含一种类型并具有强类型推断。

当您的函数返回一个 View Controller 数组时,将其返回类型更改为[UIViewController],然后您可以直接分配其返回值而无需转换(as [AnyObject])。

func papulateViewControllers() -> [UIViewController] {
//Leave code the same
}

然后将其用作

var tabs = UITabBarController()
tabs.viewControllers = papulateViewControllers() // No cast required

关于ios - 无法将类型 '[AnyObject]' 的值分配给类型 '[UIViewController]?' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32745963/

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