首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SWIFT 2: Class ViewController没有初始化器-使用谷歌的Admob

SWIFT 2是一种编程语言,用于开发iOS和macOS应用程序。它是苹果公司推出的一种现代、安全、高效的编程语言。SWIFT 2引入了许多新特性和改进,以提高开发效率和代码质量。

Class ViewController没有初始化器是一个错误信息,意味着在ViewController类中没有定义初始化器。初始化器是用于创建类实例并设置其初始状态的特殊方法。在SWIFT 2中,每个类都必须有一个初始化器,以确保对象的正确初始化。

解决这个问题的方法是在ViewController类中添加一个初始化器。可以使用init关键字来定义初始化器,并在其中设置类的初始状态。例如,可以添加一个简单的初始化器来初始化类的属性:

代码语言:swift
复制
class ViewController: UIViewController {
    var name: String
    
    init(name: String) {
        self.name = name
        super.init(nibName: nil, bundle: nil)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 其他类的方法和属性
}

在上面的例子中,我们添加了一个接受name参数的初始化器,并在其中将name属性设置为传入的值。还需要添加一个required init?(coder aDecoder: NSCoder)方法来满足NSCoding协议的要求。

相关搜索:Swift初始化器的名称与class不同吗?使用SWIFT从MVC中的控制器更新viewController在swift类中使用class_addMethod的捕获选择器为什么不能在初始化器中使用if let语法从子类的不可失败的初始化器中调用可失败的初始化器?[swift]如何在没有故事板id的swift中为导航控制器设置根视图控制器。并仅使用viewcontroller名称导航到其他视图有没有可能使用WSO2IS实现谷歌风格的企业范围的身份验证?如何在Swift中使用2个以上的参数调用选择器Swift惰性公共var初始化中的unowned self发出编译器错误,但不使用私有var初始化有没有办法使用clang格式对齐初始化器列表中的逗号?如何在没有Xcode的同一文件夹下的另一个swift文件中使用class/function如何在angular2中使用谷歌自定义覆盖的路由器导航?Xcode 7 swift,“没有使用objective-c选择器(函数)声明的方法”警告没有有效的文本识别器:在使用之前初始化OCR引擎,并确保它没有关闭Google visionYii2使用yii2-imagine在没有图像标签的浏览器中渲染图像如何在Swift 5中点击Tableview行时使用Xib (而不是StoryBoards)在SideMenu控制器中设置UINavigationController以推送新的ViewController使用图像拾取器将照片保存到2种不同的图像视图(swift3)有没有办法同时使用GPU加速器和谷歌云AI平台中的Torch进行模型部署?在没有过时Google+ API的情况下使用OAuth2承载令牌获取谷歌电子邮件地址使用Node.js和Swift服务器的Socket.IO没有检测到连接吗?[即将颁奖]使用谷歌或WSO2登录的移动(安卓和iOS)应用程序中的facebook管理器最终用户注册
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift 中风味各异的依赖注入

例如, 在Swift中使用工厂的依赖注入[1]中把依赖注入和工厂模式结合起来,以及在Swift中避免使用单例[2] 中利用依赖注入取代单利。...使用基于初始化器的依赖注入,可以这样实现: class FileLoader { private let fileManager: FileManager private let cache...为了在没有自定义初始化器的情况下实现依赖性注入,我们可以创建两个都有默认值的可变属性,就像这样: class PhotoEditorViewController: UIViewController {...对于静态API,我们没有初始化器,而且我们最好也不要静态地保持任何状态,所以基于参数的依赖注入成为一个很好的选择。...[2] 在Swift中避免使用单例: https://www.swiftbysundell.com/articles/avoiding-singletons-in-swift - EOF -

68010

Swift 中风味各异的依赖注入

例如, "在Swift中使用工厂的依赖注入"中把依赖注入和工厂模式结合起来,以及"在Swift中避免使用单利" 中利用依赖注入取代单利。...使用基于初始化器的依赖注入,可以这样实现: class FileLoader { private let fileManager: FileManager private let cache...一个例子是在构建视图控制器时,特别是当你使用 XIBs 或 Storyboards 来定义它们时,因为这样你就无法再控制你的类的初始化器了。...为了在没有自定义初始化器的情况下实现依赖性注入,我们可以创建两个都有默认值的可变属性,就像这样: class PhotoEditorViewController: UIViewController {...对于静态API,我们没有初始化器,而且我们最好也不要静态地保持任何状态,所以基于参数的依赖注入成为一个很好的选择。

81810
  • Swift| 基础语法(五)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...对象、并使用ViewController界面布局文件来 // 初始化该视图控制器关联的用户界面 let vc = ViewController() //通过控件加载视图...viewController视图控制器关联的用户界面 self.window?....} 在Swift中,创建tableViewCell的方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView的时候直接注册cell: myTb?....因为在Swift中,所有对象的构造器默认都是public,所以需要重写你的init让其成为私有的。 这样就保证像如下的代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

    2K30

    Swift学习第一练——用Swift实现的FlappyBird小游戏

    用Swift实现的FlappyBird小游戏       伴随着apple公司对swift的推广态度深入,swift火的很快,并且swift精简便捷的语法和强大的功能,对于使用Object—C开发iOS...().bounds     我们需要定义一些成员变量,如下: class ViewController: UIViewController {     var timer:NSTimer?...//背景移动的定时器     var i:Int=0//背景移动的速度     var timer2:NSTimer?//柱子和地面移动的定时器     var timer3:NSTimer?...号的理解,网上概念很多,简单理解声明变量时如果不初始化系统是不会给变量赋nil的,会报错,?的作用就是告诉系统这里如果没有初始化就是nil。同理,在用这类变量的时候,也需要加上?解包,如果加!...在控制小鸟下落的部分代码如下,其中有一点需要注意,在swift中没有隐士转换这个概念,比如你要使用int a + float b 你必须手动将int转为float:(Float)(a)+b func birdMove

    1.1K20

    Swift开发:自定义标签栏UITabBarController (Swift项目开始的第一步)

    在总结了一些基本的用法之后,我尝试使用Swift自定义UITabBarController和UITabbar,开启这Siwft项目的关键一步,首先展示一下效果图: ?...中的Main,因为我们要使用纯代码的方式来创建标签栏控制器,系统自带Main.StoryBoard的xib形式的界面我们并不需要。...第三步:创建视图控制器 自定义导航控制器和视图控制器的父类,并且创建三个继承于BaseViewController的视图控制器(因为没有过多复杂操作,这里省略代码),为之后创建标签控制器做准备。...{ //1.调用父类的初始化方法 super.init(nibName: nil, bundle: nil) //2.读取Plist文件,初始化标签栏配置数组...rootViewController = MainTabBarController(); return true } 总结:以上就是在OC代码的基础上,使用Swift来自定义标签控制器的方法和步骤

    4.4K70

    Swift 基于闭包的类型擦除

    今天,我想重点介绍在 Swift 中处理泛型时可能发生的一种情况,以及我通常如何使用基于闭包的类型擦除技术来解决这种情况。 假设我们要编写一个类,使我们可以通过网络加载模型。...这意味着仅引用ModelLoading是不够的,因为在没有更多信息的情况下编译器无法推断其关联类型。...T只在我们的初始化程序的上下文中知道,因此我们无法定义T类型的属性,除非我们使视图控制器类本身成为泛型 - 这将非常迅速使我们进一步陷入到处都是通用课程的兔子洞中(down into a rabit hole...我们现在可以更新我们之前的ViewController,使用AnyModelloader: class ViewController: UIViewController { private let...然后,我们的视图控制器将如下所示: class ViewController: UIViewController { private let loadModel: ((Result<MyModel

    1.1K20

    Swift 基于闭包的类型擦除

    今天,我想重点介绍在 Swift 中处理泛型时可能发生的一种情况,以及我通常如何使用基于闭包的类型擦除技术来解决这种情况。 假设我们要编写一个类,使我们可以通过网络加载模型。...这意味着仅引用 ModelLoading 是不够的,因为在没有更多信息的情况下编译器无法推断其关联类型。...T 只在我们的初始化程序的上下文中知道,因此我们无法定义T类型的属性,除非我们使视图控制器类本身成为泛型 - 这将非常迅速使我们进一步陷入到处都是通用课程的兔子洞中(down into a rabit...我们现在可以更新我们之前的 ViewController,使用 AnyModelloader: class ViewController: UIViewController { private...然后,我们的视图控制器将如下所示: class ViewController: UIViewController { private let loadModel: ((Result<MyModel

    1.2K20

    iOS13 Scene Delegate

    注释 AppDelegate中关于Scene的代理方法 如果使用纯代码来实现显示界面,需要在AppDelegate.h中手动添加window属性,添加以下代码即可: class AppDelegate:...使用此方法可以有选择地配置UIWindow窗口并将其附加到提供的UIWindowScene场景。 如果使用storyboard,则window属性将自动初始化并附加到场景中。...App仍然使用UIWindow对象,但现在它们已成为scene(场景)的一部分。 在if let代码块中,使用scene来初始化UIWindow对象。...接着为SwiftUI项目创建了ContentView实例,并通过使用UIHostingController将其添加为根视图控制器。 该控制器用于将基于SwiftUI的视图显示在屏幕上。...AppDelegate和Manifest的默认配置,他们没有涉及storyboard的任何东西。

    5.6K21

    Swift 项目 - Xib | StoryBoard 多人协作技巧

    但这并不应该是Storyboard的锅,仅仅是使用者对工具的滥用! 没错,就是滥用,无论是Storyboard也好,纯代码也罢,它们的本质都是工具,工具本身没有正义或邪恶,影响工具的是使用者。...如果需要在初始化的时候拿到主ViewController的实例,则应该在主ViewController``viewDidLoad方法中,调用ChildViewController的特定方法,把 self...---- 除此之外还可以使用Object对象 将它添加到控制器之上。 它的本质是一个继承自NSObject的子类,我们完全可以把它当成一个小功能模块的控制器。...缺点是没有ChildViewController的生命周期方法,如需使用viewWillAppear等,需要在主ViewController的viewWillAppear中,调用Object的自定义方法...StoryBoard 或 Xib上使用约束的技巧,可以参考文章《纯Swift项目-Xib | StoryBoard 设备适配技巧[2]》及 《纯Swift项目-Xib | StoryBoard 约束使用技巧

    2.1K20

    iOS 9 Storyboard 教程(二下)

    直到你segue他们,其他的viewController才被实例化.当你关闭这些viewController的时候,他们就立即被释放了.所以只有使用的ViewController才存在内存中....(coder:)和deinit方法,并且让它们在Xcode控制台输出了一条信息.现在再一次运行app,然后打开Add Player控制器,你应该看到这个viewController没有得到分配直到它打开的时候...(coder:)输出的状态信息.这就会是你相信了,ViewController是在使用的时候才加载的....为这个工程添加一个新的Swift文件,使用Cocoa Touch Class模板,命名为GamePickerViewController,继承自UITableViewController....你没有写任何代码调用新的控制器.你只是按住ctrl键并从静态table view cell拖拽出了新的控制器.你写的唯一的代码就是填充tableView的内容,这通常是更动态的而不是硬编码列表.

    2.2K10

    iOS-Swift 方法

    而 Swift 是一门静态语言,没有运行时的机制,那原生的 Swift 方法又是如何调用的呢? 我们通过汇编先来看一下,调用结构体的方法时,底层是如何调用的。...代码如下: 我们打来断点,进入查看当前调用的汇编代码: 可以发现,在 Swift 中,调用一个结构体的方法是直接拿到函数的地址直接调用,包括初始化方法,没有 OC 那么复杂的流程。...四、内联函数(Inline Function) 内联函数是一种编译器优化技术,它通过使用方法的内容替换直接调用该方法,从而优化性能。...x1 中 (滑动显示更多) add: 将某一寄存器的值和另一寄存器的值 相加 并将结果保存在另一寄存器中, 如: add x0, x1, x2 // 将寄存器 x1 和 x2 的值相加后保存到寄存器...x0 中 (滑动显示更多) sub: 将某一寄存器的值和另一寄存器的值 相减 并将结果保存在另一寄存器中: sub x0, x1, x2 // 将寄存器 x1 和 x2 的值相减后保存到寄存器 x0 中

    3.1K40

    Swift:静态工厂方法

    放置此类设置代码的一个非常常见的地方是子类。只需将您需要设置的对象子类化,覆盖其初始化程序并在那里进行设置——完成!...视图控制器 View controllers 让我们继续查看控制器,这是使用子类非常常见的另一种对象。...尤其是在使用子视图控制器时,我们通常最终会得到一组视图控制器,它们只能在其中呈现特定状态,而不是在其中包含大量逻辑。对于那些视图控制器,将其设置移动到静态工厂API可能是一个很好的解决方案。...特别是如果与"Swift:将子视图控制器用作插件" 中的便捷API的稍加修改版本结合使用,我们现在可以在执行异步操作时轻松添加预先配置的加载视图控制器: class ProductListViewController...如果您想了解有关此类对象以及我通常使用工厂模式的其他方式的更多信息,请查看"Swift:使用工厂模式以避免共享状态","Swift:使用工厂进行依赖注入"和"Swift: 使用懒加载属性"。

    2.4K10

    在Swift中使用工厂进行依赖注入

    让代码可测试是件好事,但如果要以这样的初始化器为代价,那就太糟糕了: class UserManager { init(dataLoader: DataLoader, database: Database...一个选择是简单地将发送者也添加到列表视图控制器的初始化器中: class MessageListViewController: UITableViewController { init(loader...= factory.makeMessageViewController(for: message) 就像我们在 "使用工厂模式来避免Swift中的共享状态 "中看到的那样,我非常喜欢工厂的一点是,它可以让你完全解耦对象的使用和创建...class MessageListViewController: UITableViewController { // 这里我们使用协议组合来创建一个工厂类型, // 其中包括这个视图控制器需要的所有工厂协议...小结 使用工厂协议和容器来设置你的依赖注入是一个很好的方法,可以避免传递多个依赖关系,以及不得不创建复杂的初始化器。

    83320

    面向协议编程与 Cocoa 的邂逅 (上)

    leg (这里应该使用虚类,但是 Swift 中没有这个概念,所以先请无视这里的 return 2),以及动物的 eat 和 run 方法,并为它们提供了实现。...myMethod 将会被动态发送给 array 中的 v1 和 v2。但是,要是我们有一个没有实现 myMethod 的类型,会如何呢?...我们依然需要在实际类型遵守这个协议的时候为它提供具体的实现: // class ViewController: UIViewController extension ViewController: P...没错,答案就是 – 没有不同。不过稍安勿躁,我们还有其他科技可以解决这个问题,那就是协议扩展。协议本身并不是很强大,只是静态类型语言的编译器保证,在很多静态语言中也有类似的概念。...当然,菱形缺陷没有被完全解决,Swift 还不能很好地处理多个协议的冲突,这是 Swift 现在的不足。

    60420

    27.Swift学习之与OC混编

    此时项目中会多出两个文件,分别是创建的Swift文件和Bridging Header文件,Bridging Header文件里面虽然什么都没有,但是已经帮我们做了很多事情。...Swift文件如下: class Person: NSObject { } 在Objective-C的类中导入头文件,注意此时导入的头文件是一个命名为项目名-Swift.h的头文件,而不是Bridging...Header文件,该头文件是自动生成的并且对开发者透明 在Swift代码中将需要暴露给OC调用的属性和方法前加上 @objc修饰符,关于这个内容可查看之前的博文 class Person: NSObject..." #import "AA-Swift.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad...Bridging Header文件导入类.png 直接在Swift文件中使用Objective-C里面定义的内容 import UIKit class ViewController: UIViewController

    1.2K10

    Swift编译之SIL(Swift Intermediate Language)

    @convention(method):Swift 方法的引用。 @convention(thin):Swift 方法的引用,但没有特殊的self或者context参数。...() } // 使用@_inheritsConvenienceInitializers注解,继承方便的初始化器 // 使用@objc标记,将类导出到Objective-C @_inheritsConvenienceInitializers...// 使用override dynamic标记,覆盖父类的初始化器并启用动态派发 override dynamic init() // 使用@objc标记的析构器,将析构器导出到..., $Person // users: %3, %4 // 使用objc_method指令调用Objective-C中的初始化器init %3 = objc_method...:表示这个初始化方法是共享的,即可能被其他模块访问 // [transparent]:表示这个初始化方法是透明的,即没有额外的控制流或操作 // [thunk]:表示这是一个动态分发的方法,可能涉及到动态派发

    31341
    领券