我想将coredata中多行的数据转换为多维数组,这样我就可以遍历它们来创建日历中的事件。但是,从对象的角度来看,似乎不可能或不建议使用真正的多维数组,因此我为每个要用于事件属性的数据列创建了一个NSMutableArray(标题,注释,时间)。
但是如何将每个列的所有值分配到自己的NSMutableArray中?或者我应该使用NSDictionary来保存值吗?
这是我从CoreData获取的非常标准:
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"My_List"
inManagedObjectContext:context];
[fetchRequest setEntity:entityDescription];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"my_list_name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize:20];
[sortDescriptors release];
[sortDescriptor release];
NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:@"my_list.cache"];
fetchedResultsController.delegate = self;
NSError *error;
BOOL success = [fetchedResultsController performFetch:&error];
if (!success) {
//Handle the error
}
self.resultsController = fetchedResultsController;
NSArray *fetchedObjects = [fetchedResultsController fetchedObjects];
这里我推测我应该遍历每个阵列的NSManagedObject,但我不确定如何。
for (NSManagedObject *list in context)
{
[ reminderTitleMutableArray addObject:my_list_List.my_list_name ];
[ reminderTitleMutableArray addObject:my_list_List.my_list_description ];
[ reminderTitleMutableArray addObject:my_list_List.my_list_tminus ];
}
这是正确的方法吗?
由于
答案 0 :(得分:1)
我强烈建议不要追求这种设计模式。通过创建多个或多维数组,您将使用无论如何存储在核心数据持久性存储中的数据来混乱您的内存。记忆问题很可能。
最好使用某种datasource
方案,我相信您可以从UITableView
获知,并根据需要检索日历中每个日期的数据。使用fetchedResultsController
,使用NSIndexPath
或其他适合您日历的方案很容易实现这一目标。