gpt4 book ai didi

ios - 如何使用 RLMArray 保存数组

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:13 27 4
gpt4 key购买 nike

注意:我对 Realm 和 Swift 还很陌生,所以请原谅我不明白的任何显而易见的事情。

我有一个工作的 UITableView,我计划用任务填充它。我希望用户能够根据需要添加和删除任务,所以我不能对任务进行硬编码,而且我希望在应用程序启动之间保存任务。最明显的方法是创建一个保存在 Realm 中的数组。问题是,我不明白如何在 Realm 中保存数组。我已经阅读了 Realm 网站上的文档,但发现它相当困惑,因为我自己对 Swift 还是很陌生(而且它在 ObjC 中)。你将如何创建一个数组并保存它?我最初尝试过这个,当它不起作用时我做了一些研究,发现 RLMArray 实际上不是一个数组:

let ToDoTasksArray: RLMArray = ["Task Goes Here", "Task Goes Here2"]

有什么帮助吗?谢谢!

编辑:

我也试过将数组作为对象保存到 RLMObject 中:

realm.addObject(ToDoTasksArray)

但这也行不通,这并不让我感到惊讶。数组不是对象。

最佳答案

Realm 保存从 RLMObject 派生的对象,因此您需要为您的任务定义类,例如:

@interface Task : RLMObject

@property NSString * task;
@property NSString * description;
@property NSDate * dueDate;
...

@end

RLM_ARRAY_TYPE(Task) // define RLMArray<Task>

然后创建一个任务列表模型:

@interface TaskList : RLMObject

@property RLMArray<Task> * tasks;

@end

现在您创建任务,将其添加到任务列表并保存:

RLMRealm * realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];

Task * task = [Task new];
task.task = @"Some new task";

RLMArray <TaskList> * tasksLists = (RLMArray <TaskList> *)[TaskList allObjects];

// You can manage multiple task lists here using unique primary key for each task list. I am assuming that we have only one list.
TaskList * taskList = tasksLists.firstObject;
[taskList.tasks addObject: task];

[realm addOrUpdateObject: taskList];

[realm commitWriteTransaction];

希望这对您有所帮助。

抱歉,我忽略了您提到您正在使用 Swift。

关于ios - 如何使用 RLMArray 保存数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28593683/

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