ios - 使用 where 子句从 coredata 中删除记录

标签 ios objective-c core-data

我有一个实体 (UserDetails),它有两列(用户名、密码)。 例如: enter image description here

由此我填充不同的值并将它们显示在表格 View 中。

     NSEntityDescription *entity = [NSEntityDescription  entityForName:@"UserDetails"
                                                 inManagedObjectContext:managedObjectContext];
         NSFetchRequest *request = [[NSFetchRequest alloc] init];
         [request setEntity:entity];
         [request setResultType:NSDictionaryResultType];
         [request setReturnsDistinctResults:YES]; 
         [request setPropertiesToFetch:@[@"username",@"password"]]; 
//not sure if this will generate the same output as what I'm thinking of.
    self.users = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy];
         [self.tableView reloadData];

预期输出(来自上面的代码):

  • (abc,def)

  • (abc,xyz)

  • (abc123,def123)

  • (s01,s01)

    现在我想在 TableView 中添加一个删除功能,它应该从表和核心数据记录中删除。

由于它们的填充顺序与核心数据模型的填充顺序不同,我想使用类似 where 子句的方式删除它。所以每当我删除 (abc,def) 时,它应该删除 coredata 中的所有类似记录。

有人可以帮忙解决这个问题吗?

TIA

最佳答案

你可以这样做:

+(BOOL)deleteDataFromUserDetailsTableWithUserName:(NSString*)strUsername AndPassword :(NSString*)strPassword;
{

    AppDelegate *objApDel = (AppDelegate *)[[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *context = [objApDel managedObjectContext];

    NSEntityDescription *userEntity=[NSEntityDescription entityForName:kTableName inManagedObjectContext:context];
    NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
    [fetch setEntity:userEntity];
      NSPredicate *p=[NSPredicate predicateWithFormat:@"username == %@ AND password=%@", strUsername,strPassword];
    [fetch setPredicate:p];
    //... add sorts if you want them
    NSError *fetchError;
    NSArray *fetchedDetails=[context executeFetchRequest:fetch error:&fetchError];
    for (self.users *details in fetchedProducts) {
        [context deleteObject:details];
    }
    if (fetchError == nil) {
        return YES;
    }
    else
    {
        return NO;
    }
}

关于ios - 使用 where 子句从 coredata 中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38652801/

相关文章:

iphone - 不确定如何修复此 EXC_BAD_ACCESS 错误

ios - 点击手势未触发

iphone - 限制 iPhone UITextField 上的字符输入

iphone - 核心数据错误 : _Unwind_Resume called from function _PFFaultHandlerLookupRow in image CoreData

ios - 为什么 UIView 不需要 QuartzCore.framework 来工作?

ios - 将 SCNNode 放置在平面上并检测节点是否被点击

objective-c - MsgPack 无法消息打包 NSData 对象

objective-c - 从 Swift 到 Objective-C 的代码行

ios - returnsObjectsAsFaults 未按预期工作

iphone - 使用核心数据按纬度/经度查找最近的