gpt4 book ai didi

ios - PINCache objectForKey 返回 NSCoding 并且无法转换它

转载 作者:可可西里 更新时间:2023-11-01 02:19:56 25 4
gpt4 key购买 nike

我正在使用 PINCache ( https://github.com/pinterest/PINCache ) 将一些对象缓存到我的应用程序中。所以,使用 objC 是完美的,但是当我想用 swift 转换时,我有 EXC_BAD_ACCESS

当我调用 objectForKey

- (id <NSCoding>)objectForKey:(NSString *)key;

我没有为该键缓存任何内容,但 Swift 知道该对象是一个 NSConding。因此,如果我将值放入键中,我就没有问题。

那么,我如何转换这个 NSCoding 结果并与 nil 值进行比较。我只需要知道从 PINCache 返回的对象是否为 nil(从不缓存)。

我已经试过了:

private func setupTrucks() {
let trucksCached: AnyObject? = PINDiskCache.sharedCache().objectForKey(TruckCache.key)
if let _truck = trucksCached as? [Truck] { //EXC_BAD_ACCESS here
print(_truck)
}
}

private func setupTrucks() {
let trucksCached = PINDiskCache.sharedCache().objectForKey(TruckCache.key) as [Truck] //EXC_BAD_ACCESS here
if trucksCached.count > 0 {
print(_truck)
}
}

最佳答案

看起来 PINCache 没有将同步 objectForKey: 方法的返回类型定义为 __nullable。否则 Swift 就不知道返回类型是可选的。

我提交了一个已经被接受的 PR,应该可以解决这个问题。您现在应该可以执行以下操作:

let trucksCached: AnyObject? = PINDiskCache.sharedCache().objectForKey("truck_key")
if let _truck = trucksCached as? Truck {
print(_truck)
}

关于ios - PINCache objectForKey 返回 NSCoding 并且无法转换它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468121/

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