代码之家  ›  专栏  ›  技术社区  ›  Tariq

核心数据处理在后台时需要完全的数据保护

  •  2
  • Tariq  · 技术社区  · 14 年前

    我只是被困在项目的中间。

    我的目标是 保护我的数据 .

    我浏览了Nickharis的博客( Core Data and Enterprise iPhone Applications – Protecting Your Data )

    但在结论中明确提到:

    如果您的应用程序需要 任何后台处理中的核心数据存储 ,那么你 无法使用数据保护 . 任何访问以下文件的尝试 NSFileProtectionComplete将导致异常 .

    我正在后台处理核心数据。

    请帮忙。我想加密和保护我的数据

    谢谢, 塔里克

    3 回复  |  直到 14 年前
        1
  •  4
  •   ImHuntingWabbits    14 年前

    根据 documentation NSFileProtectionComplete指示应用程序在后台(或未运行)时无法读取或写入文件。

    您应该可以在应用程序运行时读/写SQLite存储,但是当它处于“后台”时,您将无法访问它。

    这意味着利用iOS后台api的操作如下:

    • 提醒推送
    • 背景音频/位置
    • 任务完成(背景)
    • IP语音

    将无法访问您的SQLite存储区。但是,当应用程序正在运行时,您应该能够像平常一样访问NSPersistentStoreCoordinator。我怀疑设备端测试将导致无法从一个后台api创建持久存储协调器。

        2
  •  5
  •   Andy    10 年前

    在iOS 5上,你可以使用其中任何一个,但仍然有一个捕获它们中的每一个。

    1. NSFileProtectionCompleteUnlessOpen-文件以加密格式存储在磁盘上,必须在设备解锁时打开。一旦打开,即使用户锁定了设备,您的文件也可以继续正常访问该文件。

    2. nsfileprotectioncompleteontilfirstususerauthentication-文件以加密格式存储在磁盘上,只有在设备启动后才能访问。用户第一次解锁设备后,即使用户随后锁定设备,应用程序也可以访问该文件并继续访问该文件。

    资料来源: iOS Developer Library

        3
  •  -3
  •   deanWombourne    14 年前

    在主线程中进行文件访问调用-NSObject上有一个非常有用的方法可以帮助您:)

    // When you need to get the data from the file do this :
    NSData *data = [self performSelectorInMainThread:@selector(getFileData:) withObject:filename waitUntilDone:YES];
    
    
    // And somewhere else in your class have this method
    - (NSData *)getFileData:(NSString *)filename {
        ...
        // Get data from file and return it
        ....
    }
    

    希望能有所帮助。