ios - 扩展 NSCoding 以符合 URL

标签 ios swift

我对 swift 很陌生,想扩展 NSCoding 以符合 URL 类型。我需要定义输入和输出类型,但总是收到错误类型'URL'不符合协议(protocol)'NSCoding'

//what it looks like before entering types
DiskCacheLevel<<#K: StringConvertible#>, NSCoding>()

//what I want it to look like (<InputType, OutputType>)
DiskCacheLevel<URL, URL>() //here the error occurs

我如何扩展它以符合 URL 类型?

最佳答案

您有两个问题:

  • 您不能“扩展 NSCoding 以符合 URL 类型”,因为您无法扩展协议(protocol)以符合任何内容,并且 URL 不是一个协议(protocol)可以符合。大概您的意思是要扩展 URL 以符合 NSCoding

  • 您无法扩展 URL 以符合 NSCoding,因为只有类可以符合 NSCoding,但 URL code> 是一个结构体。

您可以使用 NSURL 而不是 URLNSURL 是一个类,您可以在 NSURLURL 之间自由转换。由于 NSURL 已经符合 NSCoding,因此您不必为此编写扩展。

let cache = DiskCacheLevel<URL, NSURL>()

let key = URL(...)
let value = URL(...)
cache[key] = value as NSURL

关于ios - 扩展 NSCoding 以符合 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44568091/

相关文章:

html - iOS 8.3 字段集边框错误

swift - NSRange 从第一次出现到字符串结束

swift 4 : Can an object remove itself from a collection

ios - 我们可以将混合应用程序与 native iOS 应用程序合并吗?

ios - Swift UIViewController 到另一个 UIViewControllers (segue)

ios - 警告文本字段中的大写 [仅第一个字]

ios - 尽管角半径是高度的一半,但 UIButton 未正确舍入

ios - glDrawElements显示问题

ios - Swift:NSTimer 内存泄漏

swift - 如何按数字和字母拆分字符串