我有一个实体 (UserDetails),它有两列(用户名、密码)。 例如:
由此我填充不同的值并将它们显示在表格 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/