我想列出可以更改顺序的任务列表,但我不确定如何将其存储在数据库中。
我不想使用数组,因为我将来必须做一些进一步的查询。
这是我的数据库的屏幕截图:
我正在尝试制作类似 Trello 的东西,用户可以在其中添加任务,并且可以根据任务的优先级上下移动任务。我还需要更改数据库中任务的位置以维护记录。我无法理解如何在任何数据库中执行此操作。我是一名经验丰富的开发人员,我曾与 mongodb 和 firebase 合作过,但这对我来说是独一无二的。
这是创建和获取所有任务的代码。当我尝试在集合中移动某些任务时。我在每个任务中维护了一个索引。假设当我将任务从索引 5 的位置移动到索引 2 时,我必须通过 +1 编辑所有即将出现的索引有没有更好的方法?
class taskManager {
static let shared = taskManager()
typealias TasksCompletion = (_ tasks:[Task],_ error:String?)->Void
typealias SucessCompletion = (_ error:String?)->Void
func addTask(task:Task,completion:@escaping SucessCompletion){
Firestore.firestore().collection("tasks").addDocument(data: task.toDic) { (err) in
if err != nil {
print(err?.localizedDescription as Any)
}
completion(nil)
}
}
func getAllTask(completion:@escaping TasksCompletion){
Firestore.firestore().collection("tasks")
.addSnapshotListener { taskSnap, error in
taskSnap?.documentChanges.forEach({ (task) in
let object = task.document.data()
let json = try! JSONSerialization.data(withJSONObject: object, options: …
Run Code Online (Sandbox Code Playgroud) database-design firebase swift firebase-realtime-database google-cloud-firestore
我正在使用下面的函数来获取 heartRateVariabilitySDNN,但它只获取一次并且不能像 heartbeat 那样实时计算?
func HRVstart() {
guard let quantityType = HKObjectType.quantityType(forIdentifier: .heartRateVariabilitySDNN) else { return }
self.healthStore.execute(self.HRVStreamingQuery())
// Create query to receive continiuous heart rate samples.
let datePredicate = HKQuery.predicateForSamples(withStart: Date(), end: nil, options: .strictStartDate)
let devicePredicate = HKQuery.predicateForObjects(from: [HKDevice.local()])
let queryPredicate = NSCompoundPredicate(andPredicateWithSubpredicates:[datePredicate, devicePredicate])
let updateHandler: HKQueryUpdateHandler = { [weak self] query, samples, deletedObjects, queryAnchor, error in
if let quantitySamples = samples as? [HKQuantitySample] {
self?.HRVprocess(samples: quantitySamples)
}
}
let query = HKAnchoredObjectQuery(type: quantityType,
predicate: queryPredicate,
anchor: nil, …
Run Code Online (Sandbox Code Playgroud) 为什么不+=
使用隐式解包的选项,例如:
var count: Int! = 10
count = count + 10 // This works
count += 10 // this does not work
Run Code Online (Sandbox Code Playgroud)
为什么不是可选的隐式解包,就像这样的情况count = count + 10
?