无法将类型“类”的值分配给类型“[类]”
Posted
技术标签:
【中文标题】无法将类型“类”的值分配给类型“[类]”【英文标题】:Cannot assign value of type 'Class' to type '[Class]' 【发布时间】:2015-11-20 03:23:29 【问题描述】:我正在设置我的第一个 Swift 项目,我目前遇到了这个错误:
Cannot assign value of type 'UIViewController' to type '[UIViewController]'
我偷偷怀疑这与?
!
业务有关...
我以为我已经弄清楚了 ?
s 并且对 !
s 有足够的了解以开始使用,但是当我开始研究应用程序委托初始化时,我对他们使用的方式感到困惑!
s。这是我到目前为止在我的didFinishLaunchingWithOptions
方法中得到的:
self.window = UIWindow(frame: UIScreen.mainScreen().bounds);
self.navCtrlr = UINavigationController();
self.rootVC = RootViewController(nibName: nil, bundle: nil);
self.navCtrlr!.viewControllers = self.rootVC! as UIViewController; ****
self.window!.rootViewController = self.rootVC;
self.window?.makeKeyAndVisible();
第 4 行(带有 ****)是问题所在。最初我使用self.rootVC as UIViewController
没有!
,但我收到一个错误,要求我添加!
,所以我这样做了。现在我得到了我现在遇到的错误。这是我的类属性的样子:
var window: UIWindow?;
var navCtrlr = UINavigationController?();
var rootVC: RootViewController?;
UINavigationController 实例化也让我感到困惑,老实说......我们使用 ?
的原因是因为我们希望变量能够包含 nil,并且不必在创建对象之前定义它, 对?那么为什么最后是()
?但我离题了。
'UIViewController'
和 '[UIViewController]'
之间有什么区别,我该怎么做才能消除此错误?
【问题讨论】:
【参考方案1】:试试
self.navCtrlr!.viewControllers = [self.rootVC! as UIViewController];
[UIViewController]
是swift中的数组
另外,我认为rootViewController
是导航控制器,所以
self.window = UIWindow(frame: UIScreen.mainScreen().bounds);
self.rootVC = RootViewController(nibName: "youNibName", bundle: nil);
self.navCtrlr = UINavigationController(rootViewController: self.rootVC!);
self.window!.rootViewController = self.navCtrlr;
self.window?.makeKeyAndVisible();
【讨论】:
以上是关于无法将类型“类”的值分配给类型“[类]”的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire:错误:无法将“结果<_,_>”类型的值分配给“结果”类型
无法将类型“[PHAsset]”的值分配给类型“UIImageView!”
无法将类型“AppDelegate”的值分配给类型“CLLocationManagerDelegate?”