PhiLipsStack 2.0.0

PhiLipsStack 2.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2015年9月
SPM支持SPM

phimage维护。



  • 作者:
  • phimage

PhiLipsStack - ϕ:lips: - 拥抱 CoreData

PhiLipsStack旨在根据从modelcontext的模型创建一个CoreData stack,并为您的managed object提供一些函数,这些函数默认使用默认的stack context,但不仅限于此

let context = NSManagedObjectContext.defaultContext
var object: MyManagedObject = MyManagedObject.create()
object.delete()

内容

堆栈和可选配置

一个CoreDataStack由以下三个元素组成

并使用持久存储类型和可选的URL初始化

var myStack = CoreDataStack(storeType: .SQLite, storeURL: anURL)

默认的可以是使用SQLite类型和您的应用程序目录可访问的

CoreDataStack.defaultStack

模型

堆栈使用您的应用程序名称作为模型名称(例如:模型文件MyAppName.xcdatamodel)如果您的模型有另一个名称,您可以通过使用myStack.modelName = "MyModelName"来设置自己的模型名称

CoreDataStack.defaultStack.modelName = "MyModelName"

:warning: 这必须在请求任何managedObjectContextpersistentStoreCoordinatormanagedObjectModel或调用框架函数之前完成

持久存储协调器

默认情况下,持久化存储协调器初始化时选择自动迁移选项。要更改此行为,请将堆栈的autoMigrate设置为false。

如果无法从当前持久化文件加载数据,将删除所有数据(removeStore()),并创建新的空文件。要更改此行为,请将removeIncompatibleStore设置为false。

管理对象上下文

默认上下文可以通过类变量在NSManagedObjectContext中访问。

NSManagedObjectContext.defaultContext

此默认上下文是默认堆栈CoreDataStack.defaultStackmanagedObjectContext属性。因此,如果需要,您可以根据自己的需要更改默认堆栈。

管理对象的CRUD操作

创建

您的NSManagedObject必须包含@objc(classname),或者您必须覆盖entityName类变量。

@objc(MyEntity)
class MyEntity: NSManagedObject {
    @NSManaged var title: String
    @NSManaged var valid: NSNumber
}

您可以使用命令行工具mogenerator从模型生成您的NSManagedObject

然后在默认上下文中创建一个对象

var entity = MyEntity.create()
var entity = MyEntity.createWithAttribute([key:value])

创建不存在的对象,两个有用的函数

var entity: MyEntity = MyEntity.findFirstOrCreate()
var anotherEntity: MyEntity.findFirstOrCreateWithPredicate(aPredicate)

读取/获取

获取一类所有对象的全部数据

if let entities = MyEntity.all() ? [Entity] { .. }
let entityCount = MyEntity.count()

使用NSPredicate进行一些基本的过滤

if let entities = MyEntity.find(predicate) ? [Entity] { .. }
let entityCount = MyEntity.count(predicate)

对于需要更复杂约束的获取,您应该使用QueryKit

let myEntityQuerySet = QuerySet<MyEntity>(NSManagedObjectContext.defaultContext, MyEntity.entityName)

这里有Swift的mogerator模板 在这里:machine.swift.motemplate

更新和保存

通过修改属性和关系以通常的方式更新您的对象,然后可以立即保存您的对象。

entity.save()

但是,建议在应用程序即将终止或进入后台时保存上下文 - 请参阅应用程序委托示例

stack.save()

删除

删除对象的操作如下

entity.delete()

您还可以删除特定类型的所有对象

Entity.deleteAll()

错误处理

此框架提供的许多功能都允许传递一个错误处理器,一个类型为(NSError) -> Void的块。

entity.delete { (error) -> () in

}
Entity.find(NSPredicate(value: true)) { (error) -> () in

}

如果没有提供错误处理器,您可以访问由堆栈处理的最后一个错误。

if let error = myStack.lastError {..}

在应用程序启动时,您还可以检查堆栈的有效性(上下文不为空)。

if !myStack.valid() {
   // log and application shutdown
}
// or with error handler
myStack.valid((error: NSError)  in {
    // log and application shutdown
}

设置

使用Xcode项目

  1. 将PhiLipsStack.xcodeproj拖到您的项目/工作区或打开它进行编译
  2. 将PhiLipsStack框架添加到您的项目中

许可

The MIT License (MIT)

Copyright (c) 2015 Eric Marchand (phimage)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

杂项

haroopad icon 使用Haroopad完成说明

徽标

灵感来源于苹果Swift徽标

为什么要有徽标?

我喜欢使用SourceTree浏览我的项目时,每个项目都看到一张图片。

Core Data Combo

mogenerator, PhiLipsStack, QueryKit