ODataSwift
ODataSwift是一个简单的Swift包装工具,用于生成OData Query V4,适用于iOS和OS X。这使得使用ODataSwift构建模式API变得非常简单,并且在Swift中使用起来更加方便
💡 特性
- 使用构建模式生成查询
- 支持 $select, $expand, $filter
- 支持类似于 $top, $skip 的 odata 分页
- 支持未绑定和绑定函数
- 支持几乎所有的谓词,如 eq, lt, gt
- 支持日期时间函数,如 now()
📖 使用方法
🔑 基本
设置OData URL
ODataQueryBuilder.configure(url: "https://services.odata.org/V4")
🔑 查询数据
$filter
$filter
系统查询选项允许客户端通过请求URL过滤资源集合
let filter = FilterExp("FirstName").eq().value("Scott").and([FilterExp("FirstName").eq().value("Scott")])
print(ODataQueryBuilder().entity("People").filter(filter).build())
$orderby
$orderby
系统查询选项允许客户端请求资源,通过使用 asc 请求升序,使用 desc 请求降序
let order = Order("EndsAt", orderType: .desc)
print(ODataQueryBuilder().entity("People").order(order).build())
顶部
系统查询选项 $top
请求将查询集合中的项目数量包含在结果中
print(ODataQueryBuilder().entity("People").top(2).build())
跳过
系统查询选项 $skip
请求要跳过和不在结果中包含的查询集合中的项目数量
print(ODataQueryBuilder().entity("People").skip(18).build())
计数
系统查询选项 $count
允许客户端请求在响应中包含的匹配资源计数值,这取决于 OData 请求中的三种情况:.onlyCount()
、.withCount()
和 inlineCount(property)
print(ODataQueryBuilder().entity("People").withCount().build())
扩展
系统查询选项 $expand
指定要在检索的资源旁边包括相关资源,类似于 $select
、$filter
等系统查询选项
let filter = FilterExp("FirstName").eq().value("Scott").and([FilterExp("FirstName").eq().value("Scott")])
let expand = Expand("Trips").filter(filter)
print(ODataQueryBuilder().entity("People").expand(expand).build())
选择
系统查询选项 $select
允许客户端请求每个实体的有限属性集
print(ODataQueryBuilder().entity("Airports").selects(["Name","IcaoCode"]).build())
搜索
系统查询选项 `$search
` 可将查询结果限制为仅包含满足指定搜索表达式的那些实体
print(ODataQueryBuilder().entity("People").search(Search("Name")).build())
通过 OData 函数生成高级查询
let url = ODataQueryBuilder().entity("People").filter(FilterExp(PropertyFunc("name", .length)).eq().value(30)).build()
print(url)
let url = ODataQueryBuilder().entity("People").filter(FilterExp(PropertyFunc("designation", .substring).value(1)).eq().value("di")).build()
print(url)
let url = ODataQueryBuilder().entity("People").filter(FilterExp(PropertyFunc("CreatedOn", .year)).eq().value(2020)).build()
print(url)
URL 编码
使用默认的 .encode()
方法来获取 OData URL 的字符串表示,用于网络调用
let urlEncoded = ODataQueryBuilder().entity("People").search(Search("Name")).encode()
print(urlEncoded)
需求
v1.0.0 该库是以 Swift 5 编写的,并支持 iOS、macOS、watchOS、tvOS
Pods
ODataSwift 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中:
use_frameworks!
pod 'ODataSwift'
Swift 包管理器
ODataSwift 同样也通过 Swift Package Manager 可用。
Xcode
选择 文件 > Swift 包 > 添加依赖...
添加 https://github.com/developer-celusion/ODataSwift.git
CLI
首先,创建包含以下内容的 Package.swift
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "MyLibrary",
products: [
.library(name: "MyLibrary", targets: ["MyLibrary"]),
],
dependencies: [
.package(url: "https://github.com/developer-celusion/ODataSwift.git", from: "1.0.0"),
],
targets: [
.target(name: "MyLibrary", dependencies: ["ODataSwift"]),
]
)
然后,输入
$ swift build
手动添加到您的项目
- 将
Lib/ODataSwift.xcodeproj
添加到您的项目中 - 将
ODataSwift.framework
与您的目标链接 - 添加
Copy Files Build Phase
以将框架包含到您的应用程序包中
参考 iOS 示例项目
作者
Swapnil Nandgave, [email protected]
许可证
ODataSwift 使用 MIT 许可证。查看 LICENSE 文件以获取更多信息。