我正在尝试获取领域对象并将它们存储在字典中,其中键是日期字符串。
我开始在领域队列中提取对象
//im doing this as data fetch is taking too much time
dispatch_async( [[ActivityManager sharedInstance]getRealmQueue], ^{
[self getActivitiesForStartDate:_startDate endDate:_endDate];
});
getActivitiesForStartDate的作用是:
对于数组中的每个日期,获取要在tableview上显示的领域对象
RLMResults *activityResults = [[[self getActivitySource]activities] objectsWhere:@"my predicate string"];
并枚举已获取的活动,并根据条件
将它们添加到数组中for (RealmActivity *tempActivity in tempActArr){
if (tempActivity.startTime) {
//condition met
[dataArr addObject:@{@"activity":tempActivity,
@"occurence":selectedDate}];
}else{
[dataArr addObject:@{@"activity":tempActivity,
@"occurence":tempActivity.startTime}];
}
}
完成数据提取后,我尝试在tableview上加载领域对象。
然而,当我尝试在cellForRow方法中访问Realm对象时,它会崩溃应用程序,说试图从错误的线程访问Realm:
- (void)configureCell:(TaskListViewCell *)cell forIndexPath:(NSIndexPath *)indexPath
{
NSArray *ar = self.dataDictionary[[[self.monthView dateSelected]shortDateString]];
RealmActivity *activity = ar[indexPath.section];
cell.dateTime.text = activity.Type; <- crashes here
cell.regarding.text = activity.regarding;
cell.location.text =activity.location;
}
我看到在主线程上调用configureCell,但是如何正确使用Realm以避免崩溃?
我不知道如何使用RLMThreadSafeReference来准备数据源。