Ios 扩展NSCoding以符合URL
我是swift新手,希望扩展Ios 扩展NSCoding以符合URL,ios,swift,Ios,Swift,我是swift新手,希望扩展NSCoding以符合URL类型。我需要定义一个输入和输出类型,并始终获取错误类型“URL”不符合协议“NSCoding” //what it looks like before entering types DiskCacheLevel<<#K: StringConvertible#>, NSCoding>() //what I want it to look like (<InputType, OutputType>) Dis
NSCoding
以符合URL类型。我需要定义一个输入和输出类型,并始终获取错误类型“URL”不符合协议“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
//输入类型之前的外观
DiskCacheLevel()
//我希望它看起来像什么()
DiskCacheLevel()//此处发生错误
我如何扩展它,使其也符合类型URL
您有两个问题:
- 您不能“扩展
以符合类型URL”,因为您不能扩展协议以符合任何内容,并且NSCoding
不是可以符合的协议。大概您的意思是希望扩展URL
以符合URL
NSCoding
- 您不能扩展
以符合URL
,因为只有类才能符合NSCoding
,但NSCoding
是一个结构URL
NSURL
而不是URL
NSURL
是一个类,您可以在NSURL
和URL
之间自由转换。由于NSURL
已经符合NSCoding
,因此不必为此编写扩展
let cache = DiskCacheLevel<URL, NSURL>()
let key = URL(...)
let value = URL(...)
cache[key] = value as NSURL
let cache=DiskCacheLevel()
let key=URL(…)
让值=URL(…)
缓存[键]=值为NSURL
< /代码>免费桥接基础类<代码> NSURL<代码>符合<代码> NS(安全)编码< /代码>。只需将URL
类型连接到NSURL
即可,反之亦然。那么,在代码中不应该是另一种方式吗?首先是URL,然后是NSURL:
?