我试图删除与CoreData模型关联的NSManagedObjects数组。我正在创建我的属性所属的类的新实例,并尝试删除其中的每个项目。关于我做错了什么的线索?
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
// THIS FOR IN LOOP WILL NOT EXECUTE...
for x in DrilledDownCategoryViewController().categoryItemsItems {
println("^^^")
managedObjectContext?.deleteObject(x as NSManagedObject)
}
// EVERYTHING ELSE WILL THOUGH...
println("asdfjkl;")
let logItemToDelete = categoryItems[indexPath.row]
managedObjectContext?.deleteObject(logItemToDelete)
self.fetchCategory()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
save()
}
}
答案 0 :(得分:1)
DrilledDownCategoryViewController
是一个班级。
DrilledDownCategoryViewController()
是它的构造函数。
使用DrilledDownCategoryViewController()
,您可以创建视图控制器的新实例,而不是访问“正在运行”的实例。
自然地,一个新的Object相关数组(或者说是什么)将是nil或者它在构造函数中设置的内容。
如果您习惯于Objective-C,那就是您所做的:
[[[DrilledDownCategoryViewController alloc] init| categoryItemsItems]
Obj-C forin循环也不会迭代一次。
答案 1 :(得分:0)
for-in-loop不会执行空数组。
只需执行此操作即可从另一个类中遇到空的fetch结果数组:如果您正在尝试访问CoreData项的获取结果数组;不依赖于从另一个类访问数组。只需获取特定的谓词过滤项并将它们注入新数组。您可以从那里更改或删除它们......