DAO
为 CoreData 和 Realm 实现了 DAO 模式。帮助您在应用程序中少考虑数据库。
特点
- 使用您的持久层同步进行 CRUD 操作。
- 从应用程序对象(实体)抽象数据库对象(条目)。
- 从并发中抽象。
安装
Cocoapods
用于与 CoreData 一起使用
pod 'DAO/CoreData'
或与 Realm 一起
pod 'DAO/Realm'
Carthage
在 Cartfile 中添加以下条目
github "RedMadRobot/DAO"
然后运行 carthage update
。
最后,您需要手动设置 Xcode 项目的配置以添加框架
-
在目标的“常规”设置选项卡中,在“链接的框架和库”部分添加您想从 Carthage/Build 文件夹中使用的每个框架。
-
在目标的“构建阶段”设置选项卡中,单击“+”图标并选择“新建 Run Script 阶段”。创建一个具有以下内容的 Run Script
/usr/local/bin/carthage copy-frameworks
- 在“输入文件”下添加您想要使用的框架的路径
3.1. 用于与 CoreData 一起使用
$(SRCROOT)/Carthage/Build/iOS/CoreDataDAO.framework
3.2. 或与 Realm 一起
$(SRCROOT)/Carthage/Build/iOS/RealmDAO.framework
- 将复制的框架的路径添加到“输出文件”
4.1. 用于与 CoreData 一起使用
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/CoreDataDAO.framework
4.2. 或与 Realm 一起
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RealmDAO.framework
使用说明
// Create DAO instance
let dao = RealmDAO(RLMMessageTranslator())
//...
// Create message entity
let message = Message(entityId: "abc", text: "text")
// Save message to database
try? dao.persist(message)
// Read saved message from database
let savedMessage = dao.read(message.entityId)
// Delete message from database
try? dao.erase(message.entityId)
请参阅示例项目以获取更多信息。
不推荐使用的情况
- 如果你有大型且复杂的数据库模式。很多实体,很多关系。
- 如果你想使用数据库的特定功能。例如,Realm Mobile Platform与DAO实现不兼容。
- 如果你有成千上万的对象(> 10-20K)。性能可能成问题。
要求
- XCode 9
- Swift 5
- iOS 9
作者
Ivan Vavilov - [email protected]