MIT Graph实践概述

Features功能

•   iCloud Support

•   Multi Local & Cloud Graphs

•   Thread Safe

•   Store Any Data Type, Including Binary Data

•   Relationship Modeling

•   Action Modeling For Analytics

•   Model With Graph Theory and Set Theory

•   Asynchronous / Synchronous Search

•   Asynchronous / Synchronous Saving

•   Data-Driven Architecture

•   Data Model Observation

•   Comprehensive Unit Test Coverage

•   Example Projects

Requirements

  • iOS 8.0+ / Mac OS X 10.10+
  • Xcode 8.0+

Communication

如果需要帮助,请使用堆栈溢出。(标签“cosmicmind”)

如果想问一个一般性问题,使用堆栈溢出。

如果发现了一个bug,并且能够提供可靠地复制它的步骤,那么就说出一个问题。

如果有功能请求,说出问题。

如果想投稿,提交一个请求。

Installation安装

Embedded frameworks require a minimum deployment target of iOS 8.

https://github.com/CosmicMind/Graph

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是一个分散的依赖关系管理器,构建依赖关系并提供二进制框架。              可以使用以下命令自制软件安装基:

$ brew update

$ brew install carthage

要使用Carthage将Graph集成到Xcode项目中,请在Cartfile中指定:

github "CosmicMind/Graph"

运行carthage update来构建框架并拖动构建的图形框架你的Xcode项目。              变更日志

Graph是一个不断发展的项目,在整个开发过程中都会遇到变化。建议在更新版本之前查看变更日志。

样品

下面是一些示例,以了解如何在应用程序中使用Graph。

访问示例repo以查看使用图形的示例项目。

为图像卡创建实体

实体是一个模型(数据)对象,它代表一个人、一个位置或一件事。它可以存储属性值,组的成员,并且可以被标记。

在下面的示例中,使用Material创建一个ImageCard视图,并用一个实体填充它的属性,该实体存储该视图的数据。

Creating data

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()

Setting the view's properties

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非常灵活。在下面的示例中,Search用于通过Material的SearchBar提供的动态UI创建对用户名的实时搜索。

Preparing the search criteria

let graph = Graph()
 
let search = Search<Entity>(graph: graph).for(types: "User").where(properties: "name")

Asynchronously searching graph

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
}

最新文章

  1. Loadrunner时间函数、用时间生成订单编号例子
  2. linux下echo命令详解(转)
  3. Codeforces 527C Glass Carving
  4. (medium)LeetCode 227.Basic Calculator II
  5. 浅谈XSS
  6. HTML5学习笔记&lt;二&gt;:元素,属性,格式化
  7. 浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
  8. 企业账号打包如何通过HTML页面打开
  9. Dynamic Inversions II 逆序数的性质 树状数组求逆序数
  10. 【NOIP2016】换教室(动态规划)
  11. HTML5 页面编辑API之Range对象
  12. shell脚本命令(记录)
  13. Nginx简易编译安装
  14. 根据 label 的 text 的大小和长度 获取 尺寸
  15. 关于Excel导出实例(适合新手,比较详细)
  16. mac 终端光标在单词之间移动
  17. ibatis.net:第五天,QueryForObject
  18. SC命令---安装、开启、配置、关闭windows服务 bat批处理(转载)
  19. Android线程和线程Handler基础一览
  20. shell实例浅谈之一产生随机数七种方法

热门文章

  1. 【Nginx(五)】Nginx配置Https证书
  2. 从苏宁电器到卡巴斯基第25篇:难忘的三年硕士时光 III
  3. hdu1529 差分约束(好题)
  4. hdu4845 状态压缩BFS
  5. 码农飞升记-02-OracleJDK是什么?OracleJDK的版本怎么选择?
  6. Docker安装ElasticSearch和Kibana
  7. .NET平台系列目录
  8. buaaoo_third_assignment
  9. 5分钟让你理解K8S必备架构概念,以及网络模型(中)
  10. Django(34)Django操作session(超详细)