【问题标题】:Core Data Transformer核心数据转换器
【发布时间】:2012-10-16 14:09:04
【问题描述】:

我想用NSValueTransformer 类加密一些核心数据列,但我不太确定要使用什么加密方法。有没有人在使用 Core Data 时尝试过加密单个实体,如果是,是否有任何工作实现的示例代码?我希望加密不会干扰我稍后用来从数据库取回数据的任何NSPredicates

【问题讨论】:

  • 在这种情况下,加密是什么意思?
  • 嗯,我的意思是目前 sqlite db 核心数据持续存在,任何人都可以读取。我希望每个条目都按照 AES256 级别加密的方式进行保护

标签: objective-c ios xcode sqlite core-data


【解决方案1】:

来自 Apple 的 iPhoneCoreDataRecipes 示例代码有一个使用 NSValueTransformer 的子类以及模型中的可转换属性的示例。查看可转换的属性类型设置:

以及价值转换器的实现:

在您的情况下,您需要分别在 transformedValuereverseTransformedValue 方法中提供加密和解密算法,沿线 suggest here

【讨论】:

  • 我试图这样做,但是当我尝试从数据库查询中取回排序的结果集时,我的 NSFetchedResultsController 取回结果时遇到了问题。看来变压器干扰了这一点。你知道为什么吗?
  • 是的,一个常规的 fetch 请求让我返回一个托管对象数组。但是当我尝试对实体中任何条目的名字进行排序和按键路径部分时,NSFetchedResultsController 没有得到任何结果
  • 奇怪。听起来像是框架中的错误。使用NSFetchedResultsController 时是否调用过NSValueTransformer 的方法?替代加密是使用 NSFileProtection 属性之一加密整个核心数据存储。问题是它要求用户在设备上设置密码。
  • 是的,方法正在被断点确认调用。 NSFileProtection 属性显然不够好,每个数据库条目都必须按照要求进行加密。我真的很茫然,因为我读过其他人遇到这个问题但没有解决方案。这个人在这里有类似的问题stackoverflow.com/questions/12845831/…
  • 有没有办法在 nsfetchedresult 控制器返回搜索结果后以某种方式对部分标签进行排序/分配?
猜你喜欢
  • 2018-07-30
  • 1970-01-01
  • 2011-10-20
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
相关资源
最近更新 更多