Tag: 协议

要求方法参数的types和协议

我正在玩Swift,正在绊倒以下问题:由于我有预定义的类Animal : //Predefined classes class Animal { var height: Float = 0.0 } 我现在用接受动物的构造函数编写类Zoo 。 但Zoo希望每个动物都有一个名字,因此定义了Namable协议。 protocol Namable { var name: String {get} } class Zoo { var animals: Animal[] = []; } 你将如何编写一个addAnimal方法,要求作为parameter passing的对象既是Animal types ,也符合协议 Namable ? 而你如何为animalsarrays声明? func addAnimal:(animal: ????) { … } 在Objective-C中,我会写这样的东西 – (void)addAnimal:(Animal<Namable>*)animal {…}

如何使用委托将数据从自定义单元格传递到父视图中的标签

我已经想出了在其他情况下如何在代表之间传递数据,但是这个问题困扰着我。 在这个例子中,我试图通过按下button发送数据,直到使用委托模式的标签,但没有任何成功。 我的猜测是,我错过了一些基本的东西,而且我还没有发现任何与这种方式有关的代表。 // // ViewController.swift // TableCellDelegate // // Created by Chris Cantley on 6/1/15. // Copyright (c) 2015 Chris Cantley. All rights reserved. // import UIKit class ViewController: UIViewController, CellInfoDelegate { var cellViewController = CellViewController() //The place to put the number into. @IBOutlet weak var sumLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() cellViewController.delegate […]

Netty Channelclosures检测

我正在使用netty和ios构build一个服务器客户端应用程序,当用户在他/她的ios设备上closuresWiFi时,我面临一个问题,netty服务器不知道这个问题。 服务器需要知道要为该用户进行清理并将其设置为离线,但是现在当用户再次尝试连接时,服务器只是告诉他他/她已经在线了。

协议扩展,变异函数

我使用的是swift 2.0,我在协议上有一个协议和一个扩展来创build一个方法的默认实现,代码如下: protocol ColorImpressionableProtocol { var lightAccentColor: UIColor? {get set} var accentColor: UIColor? {get set} var darkAccentColor: UIColor? {get set} var specialTextColor: UIColor? {get set} mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?) } extension ColorImpressionableProtocol { mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?){ lightAccentColor = impresion?.lightAccentColor accentColor = impresion?.accentColor darkAccentColor = impresion?.darkAccentColor specialTextColor = impresion?.specialTextColor } } 我后来在我的代码试图调用这个方法,并得到一个错误,读取: “不能在不可变的值上使用变异成员:'self'是不可变的” 代码如下: init(impresion: […]

Swift协议扩展方法分派与超类和子类

我发现了一个有趣的行为,这似乎是一个错误… 根据以下文章描述的行为: https://medium.com/ios-os-x-development/swift-protocol-extension-method-dispatch-6a6bf270ba94 http://nomothetis.svbtle.com/the-ghost-of-swift-bugs-future 输出不是我所期望的,当我添加SomeSuperclass ,而不是直接采用协议。 protocol TheProtocol { func method1() } extension TheProtocol { func method1() { print("Called method1 from protocol extension") } func method2NotInProtocol() { print("Called method2NotInProtocol from protocol extension") } } // This is the difference – adding a superclass class SomeSuperclass: TheProtocol { } // It works as expected when it […]

遵循Swift中ViewController中的协议

试图符合Swift UIViewController子类中的UITableViewDataSource和UITableViewDelegate。 class GameList: UIViewController { var aTableView:UITableView = UITableView() override func viewDidLoad() { super.viewDidLoad() aTableView.delegate = self aTableView.dataSource = self self.view.addSubview(aTableView) //errors on both lines for not conforming } } 文档说,你应该遵循以下方面的class :但通常是超类的地方。 另:不起作用。 在超类之后使用逗号分隔列表也不起作用 编辑: 在下面find答案。 class GameList: UIViewController, UITableViewDataSource, UITableViewDelegate { 还必须采用每个协议的所有必需的方法,我最初并没有这样做。

什么是在Swift中的java接口或目标c协议的等价物?

我一直在寻找新的Swift语言,在互联网上浏览和searchApple提供的书籍之后,试图findSwift中的接口(在java中)或协议(在objective-c中)的等价物,我似乎还无法find它。 有没有人知道这个组件在swift中的名称是什么,它的语法是什么?

目标-C-类别和协议的目的

我一直在阅读Objective-c协议和类别,对我来说都显得毫无意义。 它们都用于以一些有趣的方式添加事件到程序中,而不是仅仅手动添加它。 我可能会相信看到这个协议的目的是为了让你可以检查id的types,但是这真的是关于它的。 我看不到其他真正的用途。 至于类别,我真的不明白你为什么不把它们添加到代码。 为什么你需要手动指定你将要实现的类别中的方法,而不是只是正常地执行? 是不是你可能想做一个“子类”,但稍作修改? 为什么不只是创build一个子类呢? 我真的没有看到这些的目的,我希望有人能告诉我他们真正的用途= / 先谢谢了,基督徒

试图理解Swift中的协议/委托

我是编程和Swift的新手,我正试图理解如何在两个视图控制器(无segue)与协议和委托之间传递数据。 我有一个视图控制器(视图A),它有一个文本字段和button。 当用户点击该button时,它应该显示在另一个视图控制器(视图B)的​​标签中的文本。 我无法获得标签来显示文本 – 我将不胜感激解释什么是需要做这项工作。 非常感谢! import UIKit protocol sendNameToViewB { func showNameLabel(name:String) } class ViewA: UIViewController { var delegate: sendNameToViewB? @IBOutlet weak var textField: UITextField! @IBAction func addButton(sender: AnyObject) { delegate?.showNameLabel(textField.text) } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func […]

Swift协议只能设置?

为什么我可以做到这一点没有任何错误: var testDto = ModelDto(modelId: 1) testDto.objectId = 2 而我定义这个: protocol DataTransferObject { var objectType: DtoType { get } var parentObjectId: Int { get set } var objectId: Int { get } var objectName: String { get set } } struct ModelDto: DataTransferObject { var objectType: DtoType var parentObjectId: Int var objectId: Int var objectName: […]