在使用新的Swift 3 iOS应用程序时,我一直在使用Realm几天,总的来说,使用它比CoreData更令人愉快。
但是,文档似乎不够详细,无法帮助我弄清楚究竟是什么......
let realm = try! Realm()
...确实,以及使用此行的多个版本是否有意义(或甚至是强制性的),或者对于整个应用程序来说,单个调用是否足够。
因此,如果任何对Realm有全面了解的人都可以提供帮助,我会很感激。
我的问题,按重要性顺序排列:
上面的代码行到底是做什么的?它是否会打开某种文件管理器流,只要应用程序仍在运行,它就允许我的应用程序写入和读取Realm数据文件?
或者我是否需要在每次Realm读/写操作之前使用此行?或者它是介于两个极端之间的东西,例如需要在每个单独的类/视图控制器中调用,而不是在每次读/写操作之前调用?
为什么Realm使用try!
及其所有方法?这只是为了在各种教程和示例源文件中简化演示的目的吗?或者我们实际上是想在使用Realm时抑制生产中的错误?
感谢任何和所有的输入,因为Realm文档和示例文件似乎没有提供这些问题的答案,除非我是盲目的,这是一种可能性,所以我愿意被指向相关的文档/适用的参考页。
答案 0 :(得分:1)
感谢您使用Realm!我们将着眼于使文档更清晰。与此同时:
realm
。特别是,Realm()
为您提供了默认领域,它只是使用默认配置对象指定其配置的领域。 (目的是,如果您的应用程序只有一个Realm,您可以简单地使用此API来获取对它的引用,而无需显式传入配置结构。)您可以在此实例上调用API,就像使用任何其他Swift对象一样,或将其传递给需要Realm
参数的其他API。realm
实例,不用担心流或任何其他隐藏状态。唯一的限制是你不应该在线程或队列之间传递Realm
实例。try!
主要是为了简洁起见。生产应用程序是否需要避免使用try!
取决于是否可以合理地期望从尝试打开Realm失败中恢复,以及是否需要在Realm无法打开时发生特殊行为。您可以看到可能的错误here。最后一点:在Realm(磁盘数据库)和Swift中Realm
类的实例之间存在重要区别。如果使用相同的配置值创建多个Realm
实例,则它们可以引用相同的基础Realm数据库。例如,您可能在应用程序的不同部分或不同的线程上有多个Realm
实例(以遵守上述相同的线程要求)。我们的一些用户选择创建一名经理'在启动时打开特定Realm的singleton对象,处理可能发生的任何错误,并将Realm
实例淘汰到可能需要从数据库读取或写入的UI代码。当然,这种模式是否适合您,取决于您的编码风格和应用程序的特定需求。
希望有所帮助!
答案 1 :(得分:0)
根据我的了解,可能不太正确:
try
表示如果您愿意,可以抛出您可以处理的错误,使用try!
表示您跳过错误,如果您想要处理它,请与do
和{{结合使用1}}处理错误是否发生