我有一个用户类和一个点类。
在用户类中有几个关系来跟上用户与点的关系,包括“MarkedAsRead”,“upVoted”和“downVoted”。
使用与新点不同的颜色绘制读取点。 当我想绘制点时,我从点类和MarkedAsRead关系中查询以创建两个唯一的数组。 然后我比较两个数组 - 我搜索并删除用户已从我的点数组中读取的点以创建和“未读”数组。 然后,我将“未读”数组和“markedAsRead”数组绘制到具有相应颜色的地图。
毫不奇怪,在客户端比较两个阵列的过程花费了大量时间并且减慢了我的应用程序。
有人有任何建议吗?我应该以不同的方式构建我的数据库吗?我错误地使用了关系吗? 我应该创建一个“未读”的关系吗?如果是这样,最好的填充方法是什么?
NSMutableIndexSet *indexesToDelete = [NSMutableIndexSet indexSet];
for (NSInteger i = 0; i < [readPoints count]; i++)
{
Point *point = readPoints[i];
point.isRead = YES;
for (NSInteger j = 0; j < [Points count]; j++)
{
Point *otherPoint = Points[j];
otherPoint.isRead = NO;
if ([point.objectId isEqualToString:otherPoint.objectId])
{
[indexesToDelete addIndex:j];
}
}
}
[Points removeObjectsAtIndexes:indexesToDelete];