3.1.1

Graph 3.1.1

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最新版本2019年5月
SPM支持SPM

Daniel Dahan维护。



Graph 3.1.1

Graph

欢迎来到Graph

Graph是一个语义数据库,用于创建数据驱动的应用程序。

Material Sample

功能

  • 支持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视图,并用一个存储该视图数据的实体来填充其属性。

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]

实时搜索用户列表

使用搜索API非常灵活。在下面的示例中,搜索用于创建实时用户名搜索,并用Material的SearchBar提供的动态UI动态提供。

Material SearchBar

准备搜索条件

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
}

许可证

MIT许可证 (MIT)

版权所有 (C) 2019, CosmicMind, Inc. http://cosmicmind.com. 保留所有权利。

以下条件下,任何获得此软件及其相关文档副本(“软件”)的个人均可免费使用软件。包括但不限于使用、复制、修改、合并、发布、分发、转授许可和/或销售软件复制品的权利,并允许向软件提供者提供软件的人进行上述操作

上边的版权声明和此许可声明应包含在软件的副本或实质性部分的副本中。

该软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于对适销性、针对特定目标的适用性和非侵权性的保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他法律下产生的,这些索赔、损害或其他责任均来自软件本身或在软件的使用或任何其他方式中使用软件。