Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 热插拔持久存储文件_Iphone_Core Data - Fatal编程技术网

Iphone 热插拔持久存储文件

Iphone 热插拔持久存储文件,iphone,core-data,Iphone,Core Data,我想在应用程序运行时替换支持我的托管对象的文件。我的问题与类似,但我还有一个小小的额外挑战。我想在相同的位置替换文件,即完全相同的路径和文件名 这个问题的答案建议重建整个持久性堆栈。我同意这一点。然而,我对时机没有信心。作为一个额外的复杂性,我可能有其他线程试图访问托管对象。我知道,我不该这么做。哎呀。我发现太晚了,现在它在我的应用程序架构中已经根深蒂固,所以不要建议改变它。我通常依靠锁来保证它的安全,但在这种情况下有点棘手 所以,我认为我们需要做这些事情,不一定要按这个顺序: 锁定旧的持久存

我想在应用程序运行时替换支持我的托管对象的文件。我的问题与类似,但我还有一个小小的额外挑战。我想在相同的位置替换文件,即完全相同的路径和文件名

这个问题的答案建议重建整个持久性堆栈。我同意这一点。然而,我对时机没有信心。作为一个额外的复杂性,我可能有其他线程试图访问托管对象。我知道,我不该这么做。哎呀。我发现太晚了,现在它在我的应用程序架构中已经根深蒂固,所以不要建议改变它。我通常依靠锁来保证它的安全,但在这种情况下有点棘手

所以,我认为我们需要做这些事情,不一定要按这个顺序:

  • 锁定旧的持久存储
  • 将新文件复制到我用于持久存储的路径中
  • 创建一个新的持久性堆栈
  • 释放旧的持久性存储以及与之关联的所有托管对象
  • 解锁旧的持久存储
关于做这些事情最安全的顺序有什么想法,或者如果有任何想法是不必要的(或者需要额外的步骤)?仅供参考,我使用的是二进制存储类型,不过我希望代码足够健壮,在我决定更改时,它可以与任何存储类型一起工作