在Objective-C中:
@interface CustomDataSource : NSObject <UITableViewDataSource>
@end
在Swift中:
class CustomDataSource : UITableViewDataSource {
}
但是,将出现一条错误消息:
正确的方法应该是什么?
类型“ CellDatasDataSource”不符合协议“ NSObjectProtocol”
您必须使您的类继承自,NSObject
以符合NSObjectProtocol
。Vanilla
Swift类没有。但许多地方UIKit
期待NSObject
秒。
class CustomDataSource : NSObject, UITableViewDataSource {
}
但是这个:
类型“ CellDatasDataSource”不符合协议“ UITableViewDataSource”
是期待。在类实现协议的所有必需方法之前,您将得到错误。
所以得到编码:)
问题内容: 如何列出在Swift中实现给定协议的所有类? 说我们有一个例子: 这是我当前的(不可编译)方法: 但是当打电话给 要么 要么 导致Xcode错误:无法将类型(Animal.Protocol).Type的值转换为预期的参数类型’Protocol’。 有人设法使这个工作正常吗? 问题答案: 由于您使用的是Objective-C运行时来获取类型自省,因此需要以这种方式添加到代码中: 请注意,
问题内容: 我想创建一个具有某种类型并且也符合协议的属性,就像我在Objective-C中所做的那样: 我要寻找的是指定可以使用也符合CustomProtocol的UIViewController类型的对象设置属性,以便清楚什么是基类。我知道我可以只使用短类存根来获得相同的结果,即 但这似乎不是最干净的方法。 问题答案: 我想不出一种在Swift中表达这一点的好方法。类型的语法是: 类型→数组类型
问题内容: 我需要使一个类符合Swift中的协议,以实现委托。我该怎么办? 问题答案: 但是请注意,某些协议 要求 您实现委托方法。例如, 要求 您实施 和 如果那些不是由符合协议的类实现的,则Xcode会给您一个编译错误(始终检查协议声明,Cmd + Click将向您显示 必须 实现的方法)。
问题内容: 尝试符合Swift UIViewController子类中的UITableViewDataSource和UITableViewDelegate。 文件说,你应该在符合行后但那通常在超去。另一个不起作用。在超类之后使用逗号分隔的列表也不起作用 编辑: 还必须采用每种协议的所有必需方法,而我最初并未这样做。 问题答案: 您使用逗号: 但是要意识到,超类必须是逗号分隔列表中的第一项。 如果您
问题内容: 我试图在我快速编写的类上使用NSCoding协议,但是似乎无法弄清楚为什么当我实现所需的方法时,编译器会抱怨它“不符合协议NSCoding”: 这是一个错误还是我只是缺少一些东西? 问题答案: 如您在报告导航器中详细的编译器消息中所见,您的方法未正确声明: (在beta版本之间可能有所变化。)此外,该方法必须标记为: 在 Swift 3中 ,所需的方法是
问题内容: 我有一个带有1个可选字段和1个非可选字段的类,它们都具有Type AnotherClass 类型,并且还符合 CustomProtocol : 现场 nonoptionalField 的类型 AnotherClass 和符合 CustomProtocol 。 另一方面, optionalField 实际上是 Optional ,因此不符合 CustomProtocol : 如何解开 o