Ios CoreData删除单个对象
我想删除与值Ios CoreData删除单个对象,ios,swift,core-data,xcode6,Ios,Swift,Core Data,Xcode6,我想删除与值Test匹配的属性name中的实体Person 例如,我在核心数据中保存了这样一个条目:object.setValue(“Test”,forKey:“markedCell”)。现在,我想知道条目“Test”是否保存在属性markedCell中,以及它有哪些索引。我尝试了以下方法: var请求:NSFetchRequest=NSFetchRequest(entityName:“Person”) request.predicate=NSPredicate(格式:“markedCell=%
Test
匹配的属性name
中的实体Person
例如,我在核心数据中保存了这样一个条目:object.setValue(“Test”,forKey:“markedCell”)
。现在,我想知道条目“Test”
是否保存在属性markedCell
中,以及它有哪些索引。我尝试了以下方法:
var请求:NSFetchRequest=NSFetchRequest(entityName:“Person”)
request.predicate=NSPredicate(格式:“markedCell=%@”,“Test”)
var结果:[NSManagedObject]=context.executeFetchRequest(请求,错误:nil)作为[NSManagedObject]
现在我知道条目“Test”
是否存在,但不知道它有哪个indexPath(如果我知道哪个indexPath正确,我只能删除条目?)。当前我想删除条目“Test”
(不想将其设置为“
)
我的CoreData模型:
“测试”来自markedCell
“>
我想从markedCell
中删除“Test”
你们中有人知道如何在斯威夫特做到这一点吗
创建单元格(cellforrowatinexpath
):
崩溃:
我希望这张图片有助于更好地理解我的问题。图片链接:
我只能删除一个条目,如果我知道它有哪个索引,对吗
这是错误的。核心数据对象没有索引路径。
(获取结果控制器管理核心数据对象以供显示
在表视图中,然后有索引路径,但这完全是错误的
这里不相关。)
只需获取一个或多个要删除的对象并删除即可
他们:
对于Swift 3:
if let dataAppDelegatde = UIApplication.shared.delegate as? AppDelegate {
let mngdCntxt = dataAppDelegatde.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ItemCart")
let predicate = NSPredicate(format: "itemId = %i", Int(currentItemID)!)
print(currentItemID)
fetchRequest.predicate = predicate
do{
let result = try mngdCntxt.fetch(fetchRequest)
print(result.count)
if result.count > 0{
for object in result {
print(object)
mngdCntxt.delete(object as! NSManagedObject)
}
}
}catch{
}
}
如果让DataAppDelegade=UIApplication.shared.delegate作为?AppDelegate{
让mngdCntxt=DataAppDelegade.persistentContainer.viewContext
let fetchRequest=NSFetchRequest(entityName:“ItemCart”)
let predicate=NSPredicate(格式:“itemId=%i”,Int(currentItemID)!)
打印(currentItemID)
fetchRequest.predicate=谓词
做{
let result=尝试mngdCntxt.fetch(fetchRequest)
打印(结果计数)
如果result.count>0{
对于结果中的对象{
打印(对象)
mngdcnText.delete(对象为!NSManagedObject)
}
}
}抓住{
}
}
Ok。因此,如果我删除第一个对象,它就是对象Test
,如果我删除所有对象,markedCell是空的?@horst:fetch请求获取所有带有“markedCell==Test”的对象(可能有很多)。如果您知道只有一个匹配的对象,那么这无关紧要,否则您必须选择是否要删除一个或所有匹配的对象。好的。“Test”
也会在name
中删除。我只想在markedCell
中删除它(我用图像更新了我的问题)@horst:我不明白你的意思。上面的代码删除了“markedCell==Test”的对象(或所有对象)。它删除了对象及其所有属性。我将“Test”
存储在name
和markedCell
中。但我只想删除“Test”“
在标记的单元格中
。在name
“Test”
中,它应该保留。
let request = NSFetchRequest(entityName: "Person")
request.predicate = NSPredicate(format:"markedCell = %@", "Test")
if let results = context.executeFetchRequest(request, error: nil) as? [NSManagedObject] {
// Delete _all_ objects:
for object in results {
context.deleteObject(object)
}
// Or delete first object:
if results.count > 0 {
context.deleteObject(results[0])
}
} else {
// ... fetch failed, report error
}
if let dataAppDelegatde = UIApplication.shared.delegate as? AppDelegate {
let mngdCntxt = dataAppDelegatde.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ItemCart")
let predicate = NSPredicate(format: "itemId = %i", Int(currentItemID)!)
print(currentItemID)
fetchRequest.predicate = predicate
do{
let result = try mngdCntxt.fetch(fetchRequest)
print(result.count)
if result.count > 0{
for object in result {
print(object)
mngdCntxt.delete(object as! NSManagedObject)
}
}
}catch{
}
}