Это моя точка зрения таблицы до сих пор: нажмите hereКак получить конкретную ячейку в TableView
Как вы можете видеть, у меня есть 4 детали в моем TableView. Я загрузил их с массивом Core Data. В моем ядре данных ядра у меня есть атрибут под названием «Платный», установленный в значение BOOLEAN по умолчанию «НЕТ». Мой вид таблицы ссылается на страницу DetailViewController, в которой есть кнопка «Платная». Когда пользователь нажимает на эту кнопку, этот конкретный элемент получает отметку «PAID». Так что в моей cellForRowAtIndexPath я проверяю, уплачен ли товар или нет. На картинке показано, что мой код здесь не так, потому что только один элемент отмечен как заплаченный. Однако, когда я NSLog другие элементы в представлении таблицы, они также отмечены «Платные». Вот код для моего метода cellForRowAtIndexPath:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"OwedMoney"];
YouOweArray = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
OwedMoney *YouOweObject = [YouOweArray objectAtIndex:indexPath.row];
if (YouOweObject.paid.boolValue == NO)
{
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
[cell setBackgroundColor:[UIColor redColor]];
}
else if (YouOweObject.paid.boolValue == YES)
{
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
[cell setBackgroundColor:[UIColor greenColor]];
}
В моей DetailViewController У меня есть кнопка «оплачено» с помощью следующего кода:
- (IBAction)paid:(id)sender {
//Fetch Entity
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"OwedMoney"];
//Create an array that stores the contents of that entity
youOweArray = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
//Create managedObjectId
NSManagedObject *YouOweData = [youOweArray objectAtIndex:0];
NSManagedObjectID *moID = [YouOweData objectID];
//Successfully got the managedObjectId
NSLog(@"This is the id %@", moID);
BOOL Found = NO;
OwedMoney *Object;
for (OwedMoney *OwedObject in youOweArray)
{
NSManagedObjectID *OwedId = [OwedObject objectID];
NSLog(@"%@", OwedObject);
if (OwedId == moID)
{
Found = YES;
Object = OwedObject;
break;
}
}
if (Found)
{
BOOL isPaid = Found;
Object.paid = [NSNumber numberWithBool:isPaid];
NSLog(@"Is it paid: %@",Object.paid.boolValue? @"Yes":@"No");
NSError *error = nil;
[self.managedObjectContext save:&error];
}
}
Это типа булевой – doc92606
NSNumber скорее всего –
Я обновил код. Какая может быть ошибка, если только моя первая ячейка правильно отвечает на код, а не другие ячейки? – doc92606