1

我想从 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 ];
}

这是正确的方法吗?

谢谢

4

1 回答 1

1

我强烈建议不要追求这种设计模式。通过创建多维或多维数组,您的内存中充斥着无论如何存储在核心数据持久存储中的数据。内存问题是可能的。

使用某种datasource方案会好得多,我相信您从UITableViews 中知道,并根据需要检索日历中每个日期的数据。使用 afetchedResultsController这很容易通过NSIndexPaths 或其他适合您日历的方案来实现。

于 2011-12-24T18:08:17.883 回答