当前位置: 首页 > 面试题库 >

快速符合多种协议的类型

微生毅
2023-03-14
问题内容

我有一个符合多种协议的Objective-C变量。

id <NSObject, NSCopying, NSCoding> identityToken;

我将如何在Swift中代表这种类型?


问题答案:

这应该工作:

var identityToken: NSObjectProtocol & NSCopying & NSCoding

注意,必须快速使用NSObjectProtocol而不是NSObject。

以下是一些其他示例:

符合多种协议的对象数组:

var array: [NSObjectProtocol & NSCopying & NSCoding]

具有符合多种协议的参数的功能:

func foo(param: NSObjectProtocol & NSCopying & NSCoding) {

}

对于3.1之前的Swift版本,请使用:

var identityToken: (NSObjectProtocol, NSCopying, NSCoding)


 类似资料:
  • 问题内容: 我需要使一个类符合Swift中的协议,以实现委托。我该怎么办? 问题答案: 但是请注意,某些协议 要求 您实现委托方法。例如, 要求 您实施 和 如果那些不是由符合协议的类实现的,则Xcode会给您一个编译错误(始终检查协议声明,Cmd + Click将向您显示 必须 实现的方法)。

  • 问题内容: 在Objective-C中,可以编写如下代码: 但是如何快速编写此代码? 我已经知道如何使一个属性符合许多协议,但是使用继承不能正常工作: 编辑: 我用许多亚型像,或别人,我需要使用一些的属性加在协议定义的一些方法。在最坏的情况下,我可以使用所需的属性创建一个,但是我想知道在Swift中是否可以使用类型和某种协议来声明一个属性/变量。 问题答案: 您可以使用where子句对通用类进行此

  • 问题内容: 我正在为Swift 编写本教程:https : //www.raywenderlich.com/125311/make- game-like-candy-crush-spritekit-swift- part-1 并遇到以下代码: 我正是这样写的,但是Xcode给了我这些错误: 我从苹果的文档中找到了以下代码:https : //developer.apple.com/document

  • 问题内容: 编译错误如下: 类型“ AnyObject”不符合协议“ SequenceType” 这种压力是什么? 谁能帮我很多忙! 问题答案: 苹果在Swift编程语言中指出: for-in循环针对范围,序列,集合或进度中的每个项目执行一组语句。 目前,它仅符合protocol ,因此您无法在其上使用for循环。如果要这样做,则必须执行类似以下操作:

  • 问题内容: Beta 3一切正常,现在出现一个奇怪的错误,而且我不知道如何解决它。尝试了所有类似问题的解决方案。 这是我的代码: 两条标记线都给了我相同的错误: 类型“ String.Index”不符合协议“ IntegerLiteralConvertible” 有人能帮我吗?还是Beta 4有漏洞?谢谢! 问题答案: 在Beta 4中,Swift的String.Index处理再次发生了变化- 现

  • 问题内容: 在Swift中,我可以通过声明如下来显式设置变量的类型: 如果我们想更进一步,并声明一个符合多种协议的变量,可以使用声明式: 如果我想声明一个符合一个或多个协议并且也是特定基类类型的对象,该怎么办?等效的Objective-C看起来像这样: 在Swift中,我希望它看起来像这样: 这使我们能够灵活处理基本类型的实现以及协议中定义的添加接口。 还有其他更明显的方式可能会让我丢失吗? 例