0

Core Data何かがフェッチされた場合、プログラムからフェッチし、プログラム内でフェッチするプログラムがありますUITableView

今私の問題は、ユーザーが別のエンティティを追加する必要がある場合があることですUITableCellUITableView、エンティティ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 _ed次に、 aに追加してからNSStringクラスを確認しようとしましたが、それclass typeがクラスであった場合はNSString設定しようと しませんcell.weightInput.text

私の質問は2です:1)エンティティを開始して配列に挿入し、空かどうかを確認して後で検証できるようにする方法はありif statementますか?

それが不可能な場合2)NSArray検証して複数のアイテムにエスカレートできるものを入力するにはどうすればよいExerciseDataですか?

私の目標は、ボタンが押された回数だけ- addSet新しいものを作成するために使用することです。その後、内部にあるものを検証する必要があるため、プロパティの重みが設定されているか、そうでない場合は設定されていません。UITableCellExerciseData entitycell.weightInput.text

- (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];
    }
}
4

1 に答える 1

0

新しい CoreData エンティティを作成するには、次のことを行う必要があります。

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

後でコンテキストを保存してください。

于 2013-07-10T20:16:33.633 に答える