- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 swift 中有一个 Realm 数据库,它有时间序列数据
所以我有两个对象
Object1: LastLogin(Epoch), name(String)
Object2: Logintime(Epoch), points(Int)
我想做的是获取 LastLoginTime
并使用它来搜索 Object2s LoginTime
,如果没有匹配,则找到最接近的。
我的目标是让 object1
具有点值。
谢谢
编辑:
我在想,如果没有其他办法,那么我可以 swift 将纪元转换为日期,但是我会遇到同样的情况,我需要在 Realm 数据库中搜索最近的日期,那里似乎不是一个明确的方法来做到这一点。
最佳答案
这是我刚刚想到的解决方案。如果您有更快或更好的方法,请说出来。
我要做的第一件事是获取 Object2 的列表,然后通过时间戳对它们进行排序。
let realm = try! Realm()
let object2List = realm.objects(Object2.self).sorted(byKeyPath: Logintime)
我们现在有一个 object2 列表,不在内存中,按登录时间排序。
之后,我搜索了一个最接近的整数算法,并在SO上找到了java中的一个。这是转换:
func search(_ value: Int, _ a: [Int]) -> Int {
if(value < a[0]) {
return a[0];
}
if(value > a[a.count-1]) {
return a[a.count-1];
}
var lo = 0;
var hi = a.count - 1;
while (lo <= hi) {
var mid = (hi + lo) / 2;
if (value < a[mid]) {
hi = mid - 1;
} else if (value > a[mid]) {
lo = mid + 1;
} else {
return a[mid];
}
}
// lo == hi + 1
return (a[lo] - value) < (value - a[hi]) ? a[lo] : a[hi];
}
var testInt = 200;
var list = [150,190, 350, 908]
search(testInt,list) //=> 190
我从 https://stackoverflow.com/a/30245398/9201306 得到了这段代码
如果链接由于某种原因不再有效,他只是说“如果数组已排序,您可以在 log n 操作中进行修改后的二进制搜索:”
希望对你有帮助
关于swift - 如果找不到匹配项,我如何搜索 Realm 数据库以获得最接近的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48198212/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!