2017-06-15 43 views
0

我对swift非常陌生,并且想要扩展NSCoding以符合类型URL。我需要定义输入和输出类型,并始终得到错误Type 'URL' does not conform to protocol 'NSCoding'扩展NSCoding以符合URL

//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呢?

+1

免费桥接基础类NSURL确实符合NS(安全)编码。只需将'URL'类型桥接到'NSURL',反之亦然。 – vadian

回答

0

你有两个问题:

  • 你不能“扩展NSCoding以符合URL类型”,因为你不能扩展的协议以符合什么,URL是不是可以符合协议。推测你的意思是你想扩展URL以符合NSCoding

  • 不能扩展URL符合NSCoding因为只有类可以符合NSCoding,但URL是一个结构。

你可以做的是使用NSURL而不是URLNSURL是一类,您可以在NSURLURL之间自由转换。由于NSURL已经符合NSCoding,所以您不必为此写入扩展名。

let cache = DiskCacheLevel<URL, NSURL>() 

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

不应该是你的代码中的其他方法吗?第一个URL然后是NSURL:''? – Moritz

+0

是的,你是对的。 –