gpt4 book ai didi

swift - 结果数组<>使用 Realm 删除后更改其元素位置

转载 作者:行者123 更新时间:2023-11-30 10:57:33 31 4
gpt4 key购买 nike

我正在使用 Realm 来处理数组中的持久数据:

var listArray: Results<Category>?

当我删除 listArray 的第一个元素时,数组的最后一个元素被移动到位置 0。有没有办法改变这一点,以便每个元素移动到占据“位置 1”?

以下是正在发生的情况的示例:

删除第一项(“Item 0”)之前的listArray:

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")
}

其他操作(保存和加载)在 Realm 中运行良好。

问候,FS

最佳答案

除非你调用sorted(byKeyPath:)Results上例如,元素的顺序不保证在Results之后保留。自动更新。

因此,为了实现您的目标,您需要对 Results 进行排序基于 Category 的属性之一的实例.

关于swift - 结果数组<>使用 Realm 删除后更改其元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772000/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com