-1

У меня есть 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; 
} 

Вопросы:

  1. мой код, чтобы сохранить и принести правильно?

  2. Что я могу сделать, чтобы избавиться от Sort? Мне не нужно сортировать.

  3. Я знаю, что мой код для отображения выбранных данных в UITableView неверен. Пожалуйста, порекомендуйте.

  4. Последнее, мне также нужно сохранить каждую из этих форм в качестве объектов, чтобы пользователь мог позже вытащить их позже. Нужно ли создавать другой объект для хранения объектов LM?

Благодаря

ответ

0

Эй, чтобы работать с CoreData вам нужно создать класс сущностей из NSManagedObject.

(1) Вы можете сохранять и извлекать данные, используя класс сущности.

LM_Entity *lm = [NSEntityDescription insertNewObjectForEntityForName:@"LM_Entity" inManagedObjectContext:self.managedObjectContext]; 
//Your code 
lm.nameField5 = UITextFieldName5.text; 
//Now save 
[self.managedObjectContext save:&error]; 

В то время как получение Используйте

NSEntityDescription *entity = [NSEntityDescription entityForName:@"LM_Entity" 
             inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 

(2) Вы необходимо указать дескриптор сортировки при работе с NSFetchedResultsController.

(3) Ваш код правильный для отображения неправдоподобные данные

(4) Да, вы должны создать класс сущностей для сохранения и извлечения данных (см. 1).

Следуйте за этим tutorial для получения дополнительной информации о coredata.

+0

Благодарим вас за разъяснение. Должен ли я делать [self.managedObjectContext save: & error]; после каждого UITextField? Если у одной сцены есть 5 полей UIText, могу ли я сделать это только один раз? – user1107173

+0

yes Вы должны сначала присвоить все значения UITextField переменным LM_Entity и, наконец, вы можете вызвать [self.managedObjectContext save: & error]; **один раз**. –