鸽子(Pigeon):SwiftUI与UIKit的异步数据处理利器

鸽子(Pigeon):SwiftUI与UIKit的异步数据处理利器

PigeonAsync state management for SwiftUI (and UIKit) 🐦项目地址:https://gitcode.com/gh_mirrors/pigeo/Pigeon

🚀 项目简介

Pigeon,一个基于SwiftUI和UIKit的库,利用Combine来处理异步数据流。灵感来源于React Query,它提供了一种高效的方式来获取服务器API数据、缓存响应、在不同组件间共享数据、更新服务器资源以及管理分页数据源。无论您选择何种工具进行数据获取,Pigeon都能轻松应对。

💡 项目技术解析

Pigeon的核心在于查询(Queries)和突变(Mutations)。查询对象负责获取服务器数据,而突变对象则用于修改服务器数据。两者都遵循ObservableObject协议,因此它们完全兼容SwiftUI并可以观察其状态变化。

  • 查询通过QueryKey标识,用于缓存结果、内部链接和需要重新获取时的无效化。
  • 数据获取高度灵活,您可以自由选择Alamofire、URLSession、GraphQL或CoreData等工具,只需要使用Combine发布者。
  • 缓存功能可选,Pigeon能够几乎无需配置地存储您的响应,并在应用中自动填充数据。

💻 应用场景

  • 在SwiftUI视图中实时展示从服务器获取的数据。
  • 跨组件共享和更新远程数据。
  • 管理分页数据,例如无限滚动列表。
  • 利用Mutation实现对服务器资源的增删改操作。
  • 根据需要刷新数据,如界面改变或新数据可用。

📚 项目特点

  1. 灵活性高 - 不限制数据获取方式,支持任何Combine兼容的发布者。
  2. 易于使用 - 基于ObservableObject设计,与SwiftUI紧密集成,状态变化一目了然。
  3. 智能缓存 - 自动缓存查询结果,降低网络请求频率,提高用户体验。
  4. 强大的Mutation - 支持服务器资源的更新,并能触发相关查询的刷新。
  5. 分页支持 - 提供专门的分页查询类型,方便构建分页列表。

👀 快速上手

下面是一个简单的示例,演示如何使用Pigeon获取用户列表:

// 定义数据模型
struct User: Codable, Identifiable {
    let id: Int
    let name: String
}

// 创建用户列表视图
struct UsersList: View {
    // 创建一个查询
    @ObservedObject var users = Query<Void, [User]>(
        key: QueryKey(value: "users"),
        fetcher: {
            // 使用URLSession获取数据
            URLSession.shared
                .dataTaskPublisher(for: URL(string: "https://jsonplaceholder.typicode.com/users")!)
                .map(\.data)
                .decode(type: [User].self, decoder: JSONDecoder())
                .receive(on: DispatchQueue.main)
                .eraseToAnyPublisher()
        }
    )

    var body: some View {
        List(users.state.value ?? []) { user in
            Text(user.name)
        }
        .onAppear(perform: {
            // 视图出现时重新获取数据
            users.refetch(request: ())
        })
    }
}

这个简短的例子展示了如何定义查询、设置数据获取方法以及在SwiftUI视图中显示数据。

总之,Pigeon是iOS开发中的一个强大工具,它简化了数据处理和UI同步的过程。如果你正在寻找一个灵活且高效的解决方案来管理你的应用程序的异步数据,那么Pigeon绝对值得你尝试!

PigeonAsync state management for SwiftUI (and UIKit) 🐦项目地址:https://gitcode.com/gh_mirrors/pigeo/Pigeon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马冶娆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值