- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我创建了一个简单的字典类,用于跨多个线程同步访问字典。我正在使用 DispatchQueue 来同步从字典中读取和写入值。我正在使用泛型,以便它可以与任何字典类型一起使用 K:Hashable 作为键,T 作为对象。
这是一个类的例子:
public class SynchronizedDictionary<K, T> where K: Hashable {
private var accessQueue: DispatchQueue!
private var internalDict: [K: T]
init(queueName: String) {
accessQueue = DispatchQueue(label: queueName, qos: .default)
internalDict = [:]
}
func removeValue<K:Hashable>(forKey key: K) {
accessQueue.async(flags: .barrier) {
self.internalDict.removeValue(forKey: key)
}
}
}
尝试在字典类上调用 removeValue 函数时,编译器出现以下错误:“无法使用类型为‘(forKey: K)’的参数列表调用‘removeValue’
知道为什么我不能用通用类型调用这个 removeValue 函数吗?
最佳答案
removeValue
应该如何实现。
func removeValue(forKey key: K) {
accessQueue.async(flags: .barrier) {
self.internalDict.removeValue(forKey: key)
}
}
请注意我是如何从方法中删除通用参数 K
,而是使用类声明中的通用参数 K
。
您不能使用 新 泛型类型参数 K
因为它可能与字典的键类型不同,后者是 K
来自类声明。如果你能做到这一点,这样的事情就成为可能:
SynchronizedDictionary<Int, Int>(queueName: "myQueue").removeValue(forKey: "myKey")
removeValue
的K
参数将被推断为String
。显然这根本没有意义,所以你不能这样做。
关于通用字典类 : cannot invoke 'removeValue' with an argument list of type '(forKey K)' 的 Swift 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48505437/
我正在努力向我的应用添加编辑和删除功能。编辑功能工作正常,但我的删除功能并不总是删除正确的值。 删除功能未按预期工作的情况: 当我添加新的数据节点(在我的应用程序中是新的供应商)时。 当我编辑某个值时
所以我遇到了一个奇怪的问题。本质上,我有一个数组,它是 tableView 的数据源: data : [(String: SomeDataStruct)] = [(username1, data1),
我已经设置了以下安全规则,但是 .removeValue() 仍然能够删除记录。我做错了什么? { "rules": { ".read": "auth != null", ".wr
我试图通过查询然后调用 query.ref.removeValue() 从我的数据库中删除一个特定节点,尽管每次运行这段代码时它都会删除整个子节点而不是仅仅删除节点。我的代码看起来像这样......
我希望当用户已经按下反对票时,下次他们按下反对票按钮时,他们将从反对票字典中删除。 Firebase.getDownvote(selectedPostTimeStamp: postItem.timeS
我对 Firebase 还比较陌生,因此非常感谢对此的任何见解。当我以这种方式调用 Firebase setValue(obj,callback) 函数时,它工作得很好。但是,当我尝试删除“ref”引
我有一个应用程序可以提供一些东西。我的想法是,优惠由我添加到我创建的另一个应用程序中,然后同时显示在用户设备上。 我只需要一个用户就可以接受报价,因此当第一个用户点击时,我会在报价引用上调用 remo
我正在我的 iOS 应用程序中测试 FireBase,到目前为止它非常棒,但似乎如果我使用 [fb removeValue]; 当我未连接时,更改并不总是反射(reflect)在其他任何地方. 这是我
这个问题在这里已经有了答案: The read failed: Permission denied error in firebase (1 个回答) 关闭 6 年前。 我已经开始为 ios 使用
我正在定义我的 DbConntextObj _container.RegisterType(new HttpContextLifetimeManager()); Unity 没有在 lifetimem
我正在尝试将数据写入 Firebase 数据库,但当我按下保存按钮时,我一直收到以下错误。 2016-12-02 11:09:42.548 StartupNow[1482:60415] [Fireba
我在 stackoverflow 中看到了很多答案,但没有一个对我有用! 这是我的代码: import UIKit import Firebase class ViewController: UIVi
我创建了一个简单的字典类,用于跨多个线程同步访问字典。我正在使用 DispatchQueue 来同步从字典中读取和写入值。我正在使用泛型,以便它可以与任何字典类型一起使用 K:Hashable 作为键
我是一名优秀的程序员,十分优秀!