测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年1月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由Noah Blake维护。
Core Data Dandy 是围绕着 Core Data 的一种功能轻量级的包装,简化了常见的数据库操作。
所有标准的 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"])
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下。