У меня есть 5 экранов. На каждом экране есть опции, которые пользователь выполняет, например, через Time & Выбор даты и некоторые UIF-поля, которые пользователь вводит. Поэтому я создал ONE Entity и добавил все атрибуты (25). Я создал NSObjectSubClass называется LMОсновные данные: Fetch
В каждой сцене я делаю следующее:
@property (nonatomic, strong) LM *lMData;
NSString *date = [[NSString alloc] initWithFormat:@"%@", [dateFormatter stringFromDate:selectedDate]];
DateLabel.text = date;
self.lMData.dateLabel = date;
self.lmData.nameField5 = UITextFieldName5.text;
Перед Пользователем Segue, чтобы на следующий экран, у меня есть:
NSError *error;
NSManagedObjectContext *context = self.managedObjectContext;
if (![context save:&error])
{
NSLog(@"There was an error in Save:%@",error);
}
Теперь принести, все, что я хочу сделать, это показать данные в пользовательском UITableViewController. Это имеет 12 разделов и будет показывать по 2 ячейки в каждом разделе. Мне не нужна сортировка. Я просто хочу, чтобы ячейки отображались в правильных разделах.
Для извлечения, у меня есть следующий метод:
-(NSFetchedResultsController *) fetchResultsController
{
if (_fetchResultsController !=nil)
{
return _fetchResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"LM"
inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"startTimeLabel" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
_fetchResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
return _fetchResultsController;
}
Из того, что я читал, кажется, что для того, чтобы мне, чтобы принести мне придется сортировать, следовательно, следующую строку:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"startTimeLabel"
В моей сущности есть атрибут «startTimeLabel». Но у меня это есть, потому что меня вынуждают сортировать. Однако мне действительно не нужно сортировать.
Теперь для отображения, который не показывает ничего на данный момент:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [[self.fetchResultsController sections] count]; //I need 10 sections here;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id<NSFetchedResultsSectionInfo> secInfo = [[self.fetchResultsController sections]objectAtIndex:section];
return [secInfo numberOfObjects]; //I need 2 rows in each section here
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
LM *letsMeetData = [self.fetchResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = letsMeetData.dateLabel;
return cell;
}
Вопросы:
мой код, чтобы сохранить и принести правильно?
Что я могу сделать, чтобы избавиться от Sort? Мне не нужно сортировать.
Я знаю, что мой код для отображения выбранных данных в UITableView неверен. Пожалуйста, порекомендуйте.
Последнее, мне также нужно сохранить каждую из этих форм в качестве объектов, чтобы пользователь мог позже вытащить их позже. Нужно ли создавать другой объект для хранения объектов LM?
Благодаря
Благодарим вас за разъяснение. Должен ли я делать [self.managedObjectContext save: & error]; после каждого UITextField? Если у одной сцены есть 5 полей UIText, могу ли я сделать это только один раз? – user1107173
yes Вы должны сначала присвоить все значения UITextField переменным LM_Entity и, наконец, вы можете вызвать [self.managedObjectContext save: & error]; **один раз**. –