SwiftyIO 是一个用 Swift 编写的 Cocoa Touch 框架,可以快速将 Core Data 集成到您的 iOS 和 OS X 项目中,并提供建立实体对象的多个类。
这个库非常适合中小型复杂度项目,因为它允许您快速设置 Model 和持久化,同时抽象出使用 NSManagedObjectContext 和 NSManagedObjects 的复杂性。它还提供了有用的辅助工具,如 CoreDataTableViewController,使 iOS 表视图的设置更加容易。
试试吧,并为使它变得更好提供您的反馈!
SwiftyIO 是完全用 Swift 实现的,并以 Cocoa Touch 框架库项目的形式分发。您可以通过 Cocoapods 安装。
platform :ios, '8.0'
use_frameworks!
pod 'SwiftyIO', '~> 1.2'
Cocoa Touch 框架需要最低部署目标为 iOS 8。要在需要支持 iOS 7 的项目中使用 SwiftyIO,您需要将源代码直接包含到您的项目中。
SwiftyIO 作为 Xcode 项目分装,包含两个目标:
您可以将代码下载或克隆到您的项目中,或者将其作为子模块克隆,然后根据所需平台将 Framework 添加为 App 的目标中的链接二进制。
请将以下文件添加到您的源中:
SwiftyIO提供了用于与Core Data模型实体交互的非常简单的API。首先,您需要从BaseDataContext中派生,该类设置了您的Core Data堆栈并提供NSManagedObjectContext。使用它的高级初始化器设置模型名称。使用通用类EntityDataSource声明用于访问实体的属性,并用实体和键字段名称初始化它们,如下面的示例项目模板所示
class NotesContext: BaseDataContext {
//
// MARK: - Entity Data Source Properties
var categories: EntityDataSource<Category, NSNumber>!
var notes: EntityDataSource<Note, NSString>!
//
// MARK: - Initializers
init() {
super.init(resourceName: "Notes")
if let moc = self.managedObjectContext {
self.categories = EntityDataSource(managedObjectContext: moc,
entityName: "Category",
entityKeyName: "categoryId",
entityKeyGeneration: PrimaryKeyGeneration.AutoNumber)
self.notes = EntityDataSource(managedObjectContext: moc,
entityName: "Note",
entityKeyName: "noteId",
entityKeyGeneration: PrimaryKeyGeneration.UUID)
}
}
}
可选地,您可以将其数据上下文设置为单例,添加属性
//
// MARK: - Singleton
class var sharedInstance: NotesContext {
struct Singleton {
static var instance: NotesContext?
static var token: dispatch_once_t = 0
}
dispatch_once(&Singleton.token) {
Singleton.instance = NotesContext()
}
return Singleton.instance!
}
务必正确地替换类型。以下几点需要注意
这个模板Xcode代码片段可在此Gist中找到。
数据操作由EntityDataSource类提供。它是一个句子包装器,围绕实体,允许您轻松创建、查询、编辑和删除对象。
使用SwiftyIO创建和配置对象非常简单,假设您想添加一个笔记类别
let newCategory = NotesContext.categories.add {
$0.name = "Recipes"
}
添加方法接收一个闭包参数,该参数传递创建的对象,允许您在一遍中进行设置。对象返回给调用者,并自动持久化。
这是一个使用SwiftyIO提高生产效率的示例。查看EntityDataSource.swift的源代码,以查看所有可用方法。以下是简要列表
NotesApp项目是一个非常简单的iOS笔记应用,它使用SwiftyIO提供简单的模型管理。您可以从其GitHub存储库中查看和下载示例项目代码。
此库不是线程安全的。它最适合作为单例运行。它的主要目标是小型和简单的项目,不使用复杂的Core Data模型。
感谢使用SwiftyIO。如果您喜欢此API,请贡献并帮助我们利用Swift的力量制作一个更大更完整的Core Data API!!您可以分支此存储库并提交拉取请求。
当前可用的版本是1.2。查看完整变更日志。