Cocoa NSFileWrapper和普通的旧文件句柄

Cocoa NSFileWrapper和普通的旧文件句柄,cocoa,nsurl,nsdocument,appstore-sandbox,nsfilewrapper,Cocoa,Nsurl,Nsdocument,Appstore Sandbox,Nsfilewrapper,我们正在将一个包含大量跨平台代码的应用程序移植到Cocoa。必须使用直接对磁盘上的文件进行加载/保存的低级文件处理例程 由于NSFileWrapper旨在通过NSData呈现内存中文件的内容,并抽象出磁盘上的实际文件详细信息,因此我们不能直接使用它,对吗 因此,为了能够使用我们的低级文件处理代码 fopen() fread() 还有我们正在考虑的类似ANSI-C的东西 使用NSDocument的NSFileWrapperAPI 将文件包装中的NSData写回临时文件。文件夹 (例如~/Lib

我们正在将一个包含大量跨平台代码的应用程序移植到Cocoa。必须使用直接对磁盘上的文件进行加载/保存的低级文件处理例程

由于
NSFileWrapper
旨在通过
NSData
呈现内存中文件的内容,并抽象出磁盘上的实际文件详细信息,因此我们不能直接使用它,对吗

因此,为了能够使用我们的低级文件处理代码

  • fopen()
  • fread()
还有我们正在考虑的类似ANSI-C的东西

  • 使用
    NSDocument
    NSFileWrapper
    API
  • 将文件包装中的
    NSData
    写回临时文件。文件夹
    (例如~/Library/Caches/)
  • 把那个临时工交出来。文件(~100k..1MB)到较低级别
  • 写文件也会有类似的效果——正好相反

    现在-这种方法是直接访问
    NSFileWrapper
    所代表的文件的最简单方法吗?我们是否忽略了文件包装器中的一些API

    我们会遇到什么麻烦吗?特别是沙箱和iCloud

    由于我们希望支持包含多个文件的文件包,因此我们希望坚持使用
    NSDocument
    中基于文件包装器的API,而不使用基于
    NSURL
    的方法


    欢迎任何反馈/批评

    对于你的问题,我没有直接的答案,但我有一些强制性的阅读材料供你阅读:该书对各种可用的机制进行了深入的解释。我要特别注意的部分是(被
    NSDocument
    使用,对您来说比尝试破解
    NSDocument
    只是为了获得它的一些功能更好)和技术,其中包括使用Grand Central Dispatch的安全、异步文件访问

    我希望这有帮助