DATAFilter 1.0.1

DATAFilter 1.0.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016年9月
SPM支持 SPM

Elvis Nuñez 维护。



DATAFilter

帮助您通过比较您的 JSON 字典和 Core Data 本地对象以过滤插入、删除和更新。它还针对您本地存储的对象提供去重,并自动删除找不到的对象。

魔法

public class func changes(changes: [[String : Any]],
      inEntityNamed entityName: String,
      localPrimaryKey: String,
      remotePrimaryKey: String,
      context: NSManagedObjectContext,
      inserted: (JSON: [String : Any]) -> Void,
      updated: (JSON: [String : Any], updatedObject: NSManagedObject) -> Void)

如何使用

func importObjects(JSON: [[String : Any]], context: NSManagedObjectContext) {
    DATAFilter.changes(JSON,
                       inEntityNamed: "User",
                       localPrimaryKey: "remoteID",
                       remotePrimaryKey: "id",
                       context: context,
                       inserted: { JSON in
            let user = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: context)
            user.fillObjectWithAttributes(JSON)
        }) { JSON, updatedObject in
            if let user = updatedObject as? User {
                user.fillObjectWithAttributes(JSON)
            }
    }
}

本地和远程主键

localPrimaryKey 是本地主键的名称,例如 idremoteIDremotePrimaryKey 是 JSON 中的键的名称,例如 id

谓词

使用谓词来过滤映射更改。例如,如果 JSON 响应只属于不活动的用户,则可以有一个类似于以下的谓词

let predicate = NSPredicate(format: "inactive == %@", true)


作为旁注,您应该使用一个 更复杂的属性映射器,该映射器为您完成 fillObjectWithAttributes 部分的工作。

操作

DATAFilter 还提供了设置过滤时应运行哪些操作的选项。默认情况下使用 .All,但您也可以将选项设置为仅 .Insert.Update(避免删除项)或 .Update.Delete(避免更新项)。

用法如下

DATAFilter.changes(JSONObjects,
    inEntityNamed: "User",
    predicate: nil,
    operations: [.Insert, .Update],
    localPrimaryKey: "remoteID",
    remotePrimaryKey: "id",
    context: backgroundContext,
    inserted: { JSON in
        // Do something with inserted items
    }, updated: { JSON, updatedObject in
        // Do something with updated items
})

要求

iOS 7.0Core Data

安装

DATAFilter 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'DATAFilter'

作者

SyncDB,[email protected]

许可证

DATAFilter 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。