我对 iOS 开发还是很陌生,所以请耐心等待。
我有一个 TableView 使用静态单元格来包含选项(点击查看),我可以很好地选择单元格。我想为每个单元格分配一个值(标识符),以便在选择或取消选择单元格时,我可以从数组中添加/删除它。然后,一旦编辑完成,使用存储在数组中的引用来更新各自的 CoreData 属性。
今天我的谷歌技能让我失望了,所以非常感谢朝着正确的方向前进。
谢谢。
我对 iOS 开发还是很陌生,所以请耐心等待。
我有一个 TableView 使用静态单元格来包含选项(点击查看),我可以很好地选择单元格。我想为每个单元格分配一个值(标识符),以便在选择或取消选择单元格时,我可以从数组中添加/删除它。然后,一旦编辑完成,使用存储在数组中的引用来更新各自的 CoreData 属性。
今天我的谷歌技能让我失望了,所以非常感谢朝着正确的方向前进。
谢谢。
NSIndexPath是最好的工具!对于选定的单元格,它将是唯一的。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%i", indexPath.row);
NSLog(@"%i", indexPath.section);
}
我认为你需要这个:
[yourArray objectAtIndex:indexPath.row];
获得参考。
当在方法中选择单元格时,您可以添加有关单元格的详细信息
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
并且用于在委托方法中取消选择单元格时删除详细信息
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
您不需要保留对每个单元格的引用。数据源应该是屏幕上显示内容的镜像。您可以使用以下方法知道应该删除的内容:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
或者当您取消选择它时:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
然后NSIndexPath
您可以知道已选择/取消选择的内容:
据我了解,您想要选择/取消选择行,UITableView
并在删除表中的任何行之后,您希望它也应该从数据库中删除。
您可以使用该方法 -
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(editingStyle==UITableViewCellEditingStyleDelete)
{
[code to remove object from db on particular property];
}
}
现在从数据库中删除特定记录/行的代码是 -
-(void)deleteUserForId:(NSString *)user_id
{
NSManagedObject *statusTag=[self getUserForUserid:user_id];
NSError *error;
[managedObjectContext deleteObject:statusTag];
if (![managedObjectContext save:&error])
{
}
}
-(UserData*)getUserForUserid:(NSString *)user_id
{
NSFetchRequest *request = [self getBasicRequestForEntityName:@"UserData"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user_id== %@",user_id];
[request setPredicate:predicate];
[request setReturnsObjectsAsFaults:NO];
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
UserData *userInfoObj = nil;
if (!error && [results count] > 0)
{
userInfoObj = [results objectAtIndex:0];
}
return userInfoObj;
}