我对 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
而不是 URL
。 NSURL
是一个类,您可以在 NSURL
和 URL
之间自由转换。由于 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/