SearchbaseSDK 1.0.0

SearchbaseSDK 1.0.0

Giulio 维护。



  • Vanly Co.

SearchbaseSDK

License: MIT Swift 5.0

SearchbaseSDK 是一个强大的 Swift SDK,可以将 Searchbase API 集成到您的 macOS、iOS、tvOS 和 watchOS 应用程序中。它提供了一种与 Searchbase API 互动的便捷方式,使您能够在应用中构建复杂搜索体验。

功能

  • 易于集成 Searchbase API
  • 支持 macOS、iOS、tvOS 和 watchOS
  • 网络调用异步函数
  • 支持过滤、排序和分页的定制搜索选项
  • 详细的错误处理

要求

  • iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 6.0+
  • Swift 5.0+

安装

CocoaPods

您可以通过 CocoaPods 安装 SearchbaseSDK。将以下行添加到您的 Podfile 中:

pod 'SearchbaseSDK', '~> 1.0.0'

然后运行

pod install

Swift 包管理器

您也可以使用 Swift 包管理器 集成 SearchbaseSDK。将以下内容添加到您的 Package.swift 文件中:

dependencies: [
    .package(url: "https://github.com/searchbase-dev/SearchbaseSDK.git", from: "1.0.0")
]

用法

初始化

首先,导入 SDK 并使用您的 API 令牌初始化它

import SearchbaseSDK

@available(macOS 10.15, iOS 13.0, *)
let searchbase = SearchbaseSDK(apiToken: "your-api-token")

执行搜索

要执行搜索,请创建一个 SearchOptions 实例并调用 search 方法

let options = SearchOptions(index: "your_index", filters: nil, sort: nil, select: nil, limit: 10, offset: 0)

Task {
    do {
        let response: SearchResponse<YourModel> = try await searchbase.search(options: options)
        print("Total records: \(response.total)")
        print("Records: \(response.records)")
    } catch {
        print("Error: \(error)")
    }
}

处理分页

要处理分页并检索所有结果,请使用 searchAll 方法

Task {
    do {
        for try await records in searchbase.searchAll(options: options) {
            print("Fetched \(records.count) records")
        }
    } catch {
        print("Error: \(error)")
    }
}

模型

定义您的模型以匹配预期的响应结构

struct YourModel: Decodable {
    let id: String
    let name: String
    // Other properties...
}

错误处理

SDK 为各种场景提供了详细的错误处理

public enum SearchError: Error, CustomStringConvertible {
    case invalidURL
    case networkError(Error)
    case noData
    case decodingError(Error)
    case apiError(String)
    case unexpectedResponse(Int)

    public var description: String {
        switch self {
        case .invalidURL:
            return "Invalid URL for the API request."
        case .networkError(let error):
            return "Network error occurred: \(error.localizedDescription)"
        case .noData:
            return "No data received from the API."
        case .decodingError(let error):
            return "Failed to decode the API response: \(error.localizedDescription)"
        case .apiError(let message):
            return "API error: \(message)"
        case .unexpectedResponse(let statusCode):
            return "Unexpected response from the API. Status code: \(statusCode)"
        }
    }
}

许可

SearchbaseSDK 根据 MIT 许可证授权。有关更多信息,请参阅 LICENSE 文件。

贡献

欢迎贡献!请发起一个问题或提交一个带有您改进的拉取请求。

联系

有关支持或任何问题,请通过以下邮箱联系:[email protected]