欢迎来到Graph
Graph是一个语义数据库,用于创建数据驱动的应用程序。
功能
- 支持iCloud
- 多本地与云图
- 线程安全
- 存储任何数据类型,包括二进制数据
- 关系建模
- 分析的动作建模
- 使用图论和集合论构建模型
- 异步/同步搜索
- 异步/同步保存
- 数据驱动架构
- 数据模型观察
- 全面单元测试覆盖
- 示例项目
要求
- iOS 8.0+ / Mac OS X 10.10+
- Xcode 8.0+
通讯
- 如果你需要帮助,请使用 Stack Overflow。 (标签 'cosmicmind')
- 如果你想提出一个一般性问题,请使用 Stack Overflow。
- 如果你找到了一个错误,并且能够提供可靠地重现该错误的步骤,请提交一个报告。
- 如果你有功能请求,请提交一个报告。
- 如果你想贡献,请提交一个 pull 请求。
安装
嵌入式框架需要最低的系统版本 targets iOS 8。
CocoaPods
CocoaPods 是 Cocoa项目的依赖管理工具。你可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 将 Graph 的核心功能集成到你的 Xcode 项目中,请在你的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'Graph', '~> 3.1.0'
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个去中心化的依赖管理器,它构建你的依赖并提供二进制框架。
你可以使用 Homebrew 安装 Carthage,以下命令
$ brew update
$ brew install carthage
要想使用 Carthage 将 Graph 集成到你的 Xcode 项目中,请在你的 Cartfile 中指定它
github "CosmicMind/Graph"
运行 carthage update
命令来构建框架,并将构建好的 Graph.framework
拖入你的 Xcode 项目。
更新日志
Graph 是一个不断发展的项目,在其开发过程中将遇到变化。建议在更新版本之前查看 更新日志。
示例
以下是如何在您的应用程序中使用Graph的示例。
- 访问示例仓库,查看使用Graph的示例项目。
为图像卡片创建实体
实体是一个表示人、地点或事物的模型(数据)对象。它可以存储属性值,可以是组的一部分,并可被标记。
在下面的示例中,我们使用Material创建一个ImageCard视图,并用一个存储该视图数据的实体来填充其属性。
创建数据
let graph = Graph()
let entity = Entity(type: "ImageCard")
entity["title"] = "Graph"
entity["detail"] = "Build Data-Driven Software"
entity["content"] = "Graph is a semantic database that is used to create data-driven applications."
entity["author"] = "CosmicMind"
entity["image"] = UIImage.load(contentsOfFile: "frontier", ofType: "jpg")
graph.sync()
设置视图的属性
imageCard.toolbar?.title = entity["title"] as? String
imageCard.toolbar?.detail = entity["detail"] as? String
imageCard.imageView?.image = entity["image"] as? UIImage
let contentLabel = UILabel()
contentLabel.text = entity["content"] as? String
imageCard.contentView = contentLabel
let authorLabel = UILabel()
authorLabel.text = entity["author"] as? String
imageCard.bottomBar?.centerViews = [authorLabel]
- 下载完整的ImageCard示例。
- 了解更多关于Material的ImageCard的信息。
实时搜索用户列表
使用搜索API非常灵活。在下面的示例中,搜索用于创建实时用户名搜索,并用Material的SearchBar提供的动态UI动态提供。
准备搜索条件
let graph = Graph()
let search = Search<Entity>(graph: graph).for(types: "User").where(properties: "name")
异步搜索图
search.async { [weak self, pattern = pattern] (users) in
guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
return
}
var data = [Entity]()
for user in users {
if let name = user["name"] as? String {
let matches = regex.matches(in: name, range: NSRange(location: 0, length: name.utf16.count))
if 0 < matches.count {
data.append(user)
}
}
}
self?.tableView.data = data
}
- 下载完整的 搜索示例。
- 了解更多关于 Materials SearchBar 的信息。
许可证
MIT许可证 (MIT)
版权所有 (C) 2019, CosmicMind, Inc. http://cosmicmind.com. 保留所有权利。
以下条件下,任何获得此软件及其相关文档副本(“软件”)的个人均可免费使用软件。包括但不限于使用、复制、修改、合并、发布、分发、转授许可和/或销售软件复制品的权利,并允许向软件提供者提供软件的人进行上述操作
上边的版权声明和此许可声明应包含在软件的副本或实质性部分的副本中。
该软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于对适销性、针对特定目标的适用性和非侵权性的保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他法律下产生的,这些索赔、损害或其他责任均来自软件本身或在软件的使用或任何其他方式中使用软件。