这可能与这个仍未解决的问题非常相似:Xcode 10 beta2: Cannot invoke initializer for type 'UIView' with no arguments
问题:
不能为没有参数的'UIImageView'类型调用初始化器
但是,请给我一个机会问这个问题。我有一个以前用Swift 4.0编写的项目,忽然Xcode不允许我使用UIView
的{{1}}方法创建一个NSObject
对象。突然之间。
我已经做了什么:
init()
构建了许多视图。我想问和想知道的事情:
请不要告诉我使用UIView()
构造函数,因为我有数百个UIView(frame: CGRect)
代码和类似的代码。
我所知道的:
Where does UIView.init() come from?
请记住,UIView是Objective-C类,而Objective-C是 不是Swift。没有关于指定和便利的规则 初始化程序及其继承规则存在于Objective-C中- 一个事实,有时会在使用它们时造成重大麻烦 Swift中的类。也就是说,实际上,UIView的init()是 方便的初始化程序,调用init(frame:.zero)。
谢谢!
答案 0 :(得分:0)
要结束此主题/问题,我将添加一个答案。
我不是解决这个问题的人。这个项目,如果没有在问题中提到,仅仅是一个远程/自由职业者的附带项目。实际上,即使上面也没有提到,我实际上是将该项目迁移到Swift 4.2。在此过程中,出现了这个问题。我没有费心将所有代码片段重命名为更新期间的重命名。长话短说,我放弃了这一任务,但公司中的某个人决定解决它。
解决方案是:先完成迁移。只需重命名Swift 4.2所需的所有内容,并更新Pod。而已! :)希望这对以后的人们有所帮助。