gpt4 book ai didi

ios - Swift:扩展中的存储属性无法识别的选择器异常

转载 作者:可可西里 更新时间:2023-11-01 02:14:54 24 4
gpt4 key购买 nike

我有一个 NSURLSessionDownloadTask 的扩展,在这个扩展中,我使用 Objective C 关联对象创建了一个名为“id”的存储属性。当我尝试设置该属性时,我收到“发送到实例的无法识别的选择器”。下面是我的代码:

extension NSURLSessionDownloadTask {

private struct AssociatedKeys {
static var id: String?
}

var id: String? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.id) as? String
}
set {
if let newValue = newValue {
objc_setAssociatedObject(self, &AssociatedKeys.id, newValue as String?, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
}

稍后;

let task = session.downloadTaskWithURL(url)
task.id = identifier

最佳答案

我无法完全解释,但问题似乎在于session.downloadTaskWithURL(url) 返回一些实例内部子类 __NSCFLocalDownloadTask

如果将扩展定义为 NSURLSessionTask 的扩展而不是 NSURLSessionDownloadTask

extension NSURLSessionTask { ... }

然后它在我的测试中起作用了。

关于ios - Swift:扩展中的存储属性无法识别的选择器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39311577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com