CoreDataDandy 0.6.1

CoreDataDandy 0.6.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

Noah Blake维护。



header

简介

Core Data Dandy 是围绕着 Core Data 的一种功能轻量级的包装,简化了常见的数据库操作。

功能概要

  • 初始化并维护 Core Data 栈。
  • 提供便捷方法用于保存、插入、检索和删除。
  • 通过轻量级 API 将 json 映射到 NSManagedObject。
  • 将 NSManagedObject 反序列化为 json。

使用方法

所有标准的 CoreDataDandy 使用应通过 CoreDataDandy 的 sharedDandy 完成。然而,高级用户可能会发现它的各种组件单独使用很有用。

自定义启动

CoreDataDandy.wake("ModelName")

保存和删除

有或没有闭包的保存。

Dandy.save()
Dandy.save { error in
    // Respond to save completion.
}

有或没有闭包的删除。

Dandy.delete(object)
Dandy.delete(object) {
    // Respond to deletion completion.
}

销毁数据库的内容。例如,在无法执行迁移时恢复。

Dandy.tearDown()

检索

检索给定类型的所有对象。

Dandy.fetch(Gossip.self)

根据实体和 primaryKey 值检索对象。

Dandy.fetchUnique(Hat.self, identifiedBy: "bowler")

根据谓词检索对象的数组。

Dandy.fetch(Gossip.self, filterBy: NSPredicate(format: "topic == %@", "John Keats"))

插入和更新

插入给定类型的对象。

Dandy.insert(Gossip.self)

从 primary key 插入或检索唯一对象。

Dandy.insertUnique(Slander.self, identifiedBy: "WILDE")

上插一个唯一对象,或者插入和更新非唯一对象。

Dandy.upsert(Gossip.self, from: json)

上插一个唯一对象的数组,或者插入和更新非唯一对象。

Dandy.batchUpsert(Gossip.self, from: json)

映射最终化

需要自定义映射最终化的对象应采用 MappingFinalizer 协议。协议有一个函数,finalizeMapping(_:)

extension Conclusion: MappingFinalizer {
    func finalizeMapping(of json: [String : AnyObject]) {
        if var content = content {
            content += "_FINALIZED"
            self.content = content
        }
    }
}

序列化

序列化单个对象。

Serializer.serialize(gossip)

序列化对象数组。

Serializer.serialize([byron, wilde, andre3000])

序列化对象及其关系。

Serializer.serialize(gossip, including: ["purveyor"])

序列化对象及其嵌套关系。

Serializer.serialize(gossip, including: ["purveyor.hats.material, purveyor.predecessor"])

xcdatamodel 装饰

CoreDataDandy支持四个xcdatamodel属性。所有的装饰都在DandyConstants中声明和文档化。

@primaryKey

将此装饰添加到实体的userInfo中,以指定实体哪个属性作为其primaryKey。

@mapping

将此装饰添加到属性中,以指定该属性的替代映射。例如,如果一个属性命名为“abbreviatedState”,但此属性的json值在“state”键中找到,则将“@mapping : state”添加到abbreviatedState的userInfo中。

@false

与@mapping关键字结合使用此装饰以禁用属性映射。例如,如果你的实体有一个名为“secret”的属性,你希望自行映射,则将“@mapping : @false”添加到secret的userInfo中。

@singleton

如果在数据库中的此实体不应有任何多个实例,请将此装饰添加到实体的userInfo中。此装饰可能对于像Tokens和CurrentUsers这样的对象很有用,尽管它主要是为了建议可能在将来添加的装饰类型。

警告

要接收Swift项目的控制台警告,请将条目-D DEBUG添加到项目构建设置的Swift Compiler - Custom Flags下。