【发布时间】:2017-09-29 10:21:27
【问题描述】:
基于以下代码,我希望能够从现有代码创建一个新的ItemList。换句话说,我有一个名为First List 的ItemList,我想创建一个新的ItemList,将其命名为Second List,并用来自First List 的Items 填充它。
我现在拥有它的方式是它按预期创建Second List,First List 中的Items 显示在Second List 中,但是当我只想删除Items 来自 First List,它从两个列表中删除 Items。我想我并没有真正复制这些项目。
所以问题是,我如何将Items 从First List 复制到Second List?
对象模型:
class ItemList: Object {
dynamic var listName = ""
dynamic var createdAt = NSDate()
let items = List<Item>()
}
class Item:Object{
dynamic var productName:String = ""
dynamic var createdAt = NSDate()
}
从First List 创建Second List 的代码
这很好用,它创建 Second List 并添加来自 First List 的项目,但我不认为我在制作副本只是在 Second List 中显示它们。
let newList = ItemList()
newList.listName = "Second List"
if let selectedList = realm.objects(ItemList.self).filter("listName = %@", "First List").first{
let itemsFromFirstList = selectedList.items
newList.items.append(objectsIn:itemsFromFirstList)
}
try! realm.write {
realm.add(newList)
}
这个代码应该只删除First List中的项目
这实际上删除了 First List 和 Second List 中的项目
let listToDelete = realm.objects(ItemList.self).filter("listName = %@", "First List").first
try! realm.write {
for item in (listToDelete?.items)! {
realm.delete(realm.objects(Item.self).filter("productName = %@", item.productName).first!)
}
}
【问题讨论】: