我正在使用领域来处理数组中的持久数据:
var listArray: Results<Category>?
当我删除listArray的第一个元素时,数组的最后一个元素将移动到位置0。是否有办法更改它,以便每个元素都移到“ position-1”位置?>
这是正在发生的事的一个例子:
listArray删除第一个项目(“项目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> (
);
}
))
如您所见,Item 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
答案 0 :(得分:0)
除非您在sorted(byKeyPath:)
实例上调用Results
,否则不能保证在Results
自动更新之后元素的顺序不会保留。
因此,为了实现您的目标,您需要根据Results
的属性之一对Category
实例进行排序。