2013-07-10 5 views
0

У меня есть программа, которая извлекает из Core Data, а затем в программу, если что-то происходит, она отображает результаты в моем UITableView.как создать экземпляр объекта CD без извлечения

Теперь моя проблема заключается в том, что иногда мне нужен пользователь, чтобы добавить еще один UITableCell моих UITableView, но мои tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section подсчетов элементов в моем массиве, который держит свою ExerciseData сущности.

Я попытался создать объект ExerciseData, как если бы это был объект, но это не работает и сбой программы. делая

if ([[_ed objectAtIndex:indexPath.row] weight]) { 
      NSLog(@"%@",_ed); 
      cell.weightInput.text = [NSString stringWithFormat:@"%@",[[_ed objectAtIndex:indexPath.row] weight]]; 
     } 

он бросает ошибку CoreData: error: Failed to call designated initializer on NSManagedObject class 'ExerciseData', что заставило меня понять, что я не могу начать CD сущности подобное.

тогда я пытался добавить к NSArray _edNSString, а затем проверить для класса, и если class type был класс NSString он не должен пытаться установить cell.weightInput.text

Мой вопрос являются 2: 1) Является ли есть способ инициировать объект, чтобы я мог вставить его в массив, а затем проверить, является ли пустым, чтобы затем я мог проверить его на более позднем if statement?

, если это не представляется возможным 2) Как я мог заселить NSArray с чем-то, что может быть одобренным & увеличено до multimple элементов, но и работать, когда есть ExerciseData?

Моя цель состоит в том, что человек использует - addSet создать новый UITableCell столько раз кнопка нажата, то мне нужно, чтобы проверить все, что находится внутри, так что если это ExerciseData entity и вес свойство устанавливается для заполнения cell.weightInput.text или иначе Dont заполнить его

- (void) addNewSet { 
    ExerciseData * newEd = [[ExerciseData alloc] init]; 
    NSMutableArray* ar = [[NSMutableArray alloc]initWithArray:_ed]; 
    [ar addObject:newEd]; 
    _ed = [[NSArray alloc] initWithArray:ar]; 
    [_mytable reloadData]; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    workoutCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
    if (!cell) { 
     cell = [[workoutCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 
    } 

    cell.weightInput.text = @""; 
    if (indexPath.row < [_ed count]) { 
     if (![[[_ed objectAtIndex:indexPath.row] class] isKindOfClass:[NSString class]]) { 
      NSLog(@"%@",_ed); 
      cell.weightInput.text = [NSString stringWithFormat:@"%@",[[_ed objectAtIndex:indexPath.row] weight]]; 
     } 
    } 
//... 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if ([_ed count] == 0) { 
     return 1; 
    } else { 
     return [_ed count]; 
    } 
} 

ответ

0

чтобы создать новый объект CoreData вам нужно:

ExerciseData *data = (ExerciseData*)[NSEntityDescription insertNewObjectForEntityForName:@"ExerciseData" inManagedObjectContext:yourContext]; 

Убедитесь, чтобы сохранить контекст после того, как!