【发布时间】:2018-12-14 00:34:32
【问题描述】:
我正在使用领域来处理来自数组的持久数据:
var listArray: Results<Category>?
当我删除 listArray 的第一个元素时,我的数组的最后一个元素移动到位置 0。有没有办法改变这一点,让每个元素移动到“位置-1”,而不是?
下面是正在发生的事情的一个例子:
删除第一项之前的listArray(“Item 0”):
Optional(Results<Category> <0x7f89dd637250> (
[0] Category {
listName = Item 0;
categoryColorHex = #EDF1F2;
items = List<Item> <0x600001dd9b00> (
);
},
[1] Category {
listName = Item 1;
categoryColorHex = #E57D22;
items = List<Item> <0x600001dd8a20> (
);
},
[2] Category {
listName = Item 2;
categoryColorHex = #A38570;
items = List<Item> <0x600001dd8fc0> (
);
}
))
删除“项目0”后:
Optional(Results<Category> <0x7f89dd637250> (
[0] Category {
listName = Item 2;
categoryColorHex = #A38570;
items = List<Item> <0x600001dd9050> (
);
},
[1] Category {
listName = Item 1;
categoryColorHex = #E57D22;
items = List<Item> <0x600001ddb840> (
);
}
))
如您所见,我的数组中的最后一个元素第 2 项现在占据了第一个位置。 这是删除东西的代码:
if listArray?[indexPath.row] != nil {
do {
try self.realm.write {
self.realm.delete(listArray![indexPath.row])
}} catch {
print("error at editActionsForRowAt: \(error)")
}
//print("\(listArray) \n \n")
}
其他操作(保存和加载)在领域中运行良好。
问候, FS
【问题讨论】:
-
移除时,数组会被剩余元素重新分配,如果您需要排序结果,您应该自行排序。