0

我有一个 iPhone 应用程序,用户可以在其中为一周中的每一天设置一天中不同时间的可用性。每天只有三个可用时段(早上/下午/晚上)暂时可行,但我想在未来实施时间。用户将尝试根据可用性搜索其他用户。什么是一个好的数据库架构和搜索算法来实现这个?我使用 stackmob 作为我的后端。如果有人能给我一些提示或指出一种能够搜索可用性匹配的算法,我将非常感激。我目前有一种粗略的方法 - 21 个变量(每个变量为 7 天 * 3 个时间段的布尔值)。我想找到一个更聪明的方法。

4

1 回答 1

0

我会做以下事情:

  • 使用数据库中的日期/时间存储可用性。每个可用插槽都有一条记录。您使用什么时间来表示每个插槽是任意的。例如,也许早上是上午 9 点,下午是下午 1 点,晚上是下午 5 点。但是通过使用日期/时间,您可以设置自己以稍后将其更改为更精确的内容(例如开始时间、结束时间)。
  • 在要求的时间范围内(例如从现在到 1 周时间)查询每个用户的可用性。让我们调用结果数组 A 和 B。
  • 现在运行以下算法...

    NSUInteger a = 0;
    NSUInteger b = 0;
    BOOL foundMatch = NO;
    while(a < A.count && b < B.count) {
        NSComparisonResult result = [A[a] compare:B[b]];
        if(result == NSOrderedSame) {
            foundMatch = YES;
            break;
        } else if(result == NSOrderedDescending) { //a>b
            b++;
        } else {
            a++;
        }
    }
    
于 2013-04-30T19:02:51.073 回答