22得票4回答
我能扩展Swift中的元组吗?

我希望能够为 Swift 中的元组(例如,包含两个值)编写扩展。例如,我想编写这个 swap 方法: let t = (1, "one") let s = t.swap 需要将s的类型更改为(String, Int),值为("one", 1)。我知道我可以很容易地实现一个swap(t)函...

21得票1回答
声明带有默认参数值的协议函数。

我希望将这个函数定义在协议里: func slideToRight(currentViewController viewController: UIViewController, completion: ((Bool)->())? = nil) { // do some stu...

19得票3回答
嵌套在类中的Swift协议

我想在我的类中嵌入一个协议来实现委托模式,就像这样:class MyViewController : UIViewController { protocol Delegate { func eventHappened() } var delegate...

19得票1回答
使一个快速协议符合可哈希化要求

我正在尝试让Hashable与符合相同protocol的多个struct一起使用,但却走了弯路。 我有一个声明为SomeLocation的协议,就像这样: protocol SomeLocation { var name:String { get } var coordin...

18得票3回答
在 ViewController 和 ContainerViewController 之间传递数据

我正在开发一个应用程序,需要在视图和容器视图之间传递数据。我需要从两个视图发送和接收数据。 让我解释得更清楚一些: 我可以通过协议更改Label Master(触摸容器按钮),但我无法更改Label Container(触摸Master按钮)。发生的情况是主控制器通过以下方式连接到容器控制...

18得票6回答
IBOutlet即使不为空也会崩溃,出现EXC_BAD_ACCESS错误。

在一个UIViewController(rolePageController)中,我配置了另一个UIViewController(drawerController),并传递了两个UIView从角色页面到drawerController的配置中。当drawerController试图访问来自ro...

16得票1回答
为什么在静态函数中Self和self有时会引用不同的类型?

最近,我一直在使用Swift开发多个面向协议的应用框架,并注意到协议扩展中静态函数的一些(看似)奇怪的行为,特别是当从元类型调用扩展函数时。 我最初发现这些行为的方式是在解决一个错误时,其中对象的类型以一种看似不可能的方式发生了变化。我追踪了问题并最终确定是因为在静态函数中,“Self”和“...

15得票1回答
在Swift 4中使用KVObserving协议

我正在努力使用Swift 4中的新强类型KVO语法来观察仅通过协议可见的属性:import Cocoa @objc protocol Observable: class { var bar: Int { get } } @objc class Foo: NSObject, Obse...

14得票3回答
Swift公共协议带有内部函数和属性

我正在考虑在使用协议时,将某些函数设置为公共的,而将一些函数设置为内部的最佳实践。我正在使用Swift 3编写一个AudioManager,它封装了AVPlayer作为框架。我希望某些方法是公开的,以便使用AudioManager的ViewController可以访问某些方法,但某些方法不会在...

14得票3回答
具有通用类型的协议函数

我想创建一个类似以下的协议:protocol Parser { func parse() -> ParserOutcome<?> } enum ParserOutcome<Result> { case result(Result) cas...