AlamofireRSSParser 4.0.0

AlamofireRSSParser 4.0.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2022 年 10 月
SPM支持 SPM

name 维护。



  • 作者:
  • Don Angelillo

AlamofireRSSParser

Swift Platforms Version Swift Package Manager License CI Status

需求

  • Xcode 13.3.1+
  • Swift 5.6+
  • Alamofire 5.5.0+

注意:AlamofireRSSParser 4.0.0 添加了对 Swift Concurrency 的支持。由于旧版 Swift 5.5 编译器和 Xcode 版本的问题,AlamofireRSSParser 的并发支持需要 Swift 5.6.0 或 Xcode 13.3.1

旧版 Swift 支持

如果您需要支持更早的 Swift 版本,请下载 zip 文件或将 Podfile 指向相应的标签

  • Swift 5.0 - 5.5:标签 "3.0.0"
  • Swift 4.0:标签 "Swift 4.0 Final"
  • Swift 3.x:标签 "2.0.1"
  • Swift 2.2:标签 "Swift 2.2 Final"
  • Swift 2.3:标签 "Swift 2.3 Final"

这些标签中的 respective readme 有更明确的说明如何在使用 CocoaPods 中的标签

旧版 Alamofire 支持

如果您需要支持 Alamofire 的早期版本,请下载 zip 文件或将您的 Podfile 指向相应的标签

  • Alamofire 5.5:标签 "3.0.0"
  • Alamofire 4:标签 "2.2.0"

安装

Cocoapods

AlamofireRSSParser 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile

pod "AlamofireRSSParser"

然后

import AlamofireRSSParser

在任何使用它的地方。

注意:由于 Alamofire 是 AlamofireRSSParser 的依赖项,确保您的 Podfile 中没有包含 Alamofire。

Swift 包管理器

Swift 包管理器 是一个用于自动化 Swift 代码分布的工具,它集成到了 swift 编译器中。

一旦您设置了 Swift 包,将 Alamofire 作为依赖项添加的方法就像将它添加到 Package.swiftdependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/AdeptusAstartes/AlamofireRSSParser.git", .upToNextMajor(from: "4.0.0"))
]

但我们都知道这实际上不起作用,您实际上不应这样做,尽管 GitHub 上每个支持 SPM 的库都建议这样做。所以,在 Xcode 中选择 文件 > 添加包,将此仓库 URL 粘贴到对话框中,并选择“更新到下一个主要版本”。

手动添加

或者您可以将 AlamofireRSSParser/Pod/Classes/ 目录的内容添加到您的项目中,并相应地导入类。

用法

注意:要运行示例项目,请先克隆仓库,然后从示例目录运行pod install

您可以使用AlamofireRSSParser像一个响应处理器一样

老式闭包示例

let url = "http://feeds.foxnews.com/foxnews/latest?format=xml"

AF.request(url).responseRSS() { (response) -> Void in
    if let feed: RSSFeed = response.value {
        /// Do something with your new RSSFeed object!
        for item in feed.items {
            print(item)
        }
    }
}

Swift并发示例

// Swift concurrency example.
if #available(iOS 13.0, *) {
    Task.init {
        if let rss = await self.swiftConcurrencyFetch() {
            print(rss)
        }
    }
}

@available(iOS 13, *)
func swiftConcurrencyFetch() async -> RSSFeed? {
    let url = "http://feeds.foxnews.com/foxnews/latest?format=xml"
    let rss = await AF.request(url).serializingRSS().response.value
    return rss
}

AlamofireRSSParser返回一个包含RSSItem对象数组的RSSFeed对象。

它做什么和不做什么

我想我们都可以承认RSS实现有些混乱。这个项目旨在解析人们实际上使用/关注的RSS 2.0规范中的所有常见、高层次内容。

它目前解析的RSS 2.0规范元素

  • 标题
  • 链接
  • itemDescription
  • guid
  • 作者
  • 评论
  • 来源
  • 发布日期
  • 封装
  • 分类

此外,由于这是从最初是Heavy Headlines的骨干迁移到Swift的版本,它也解析了媒体RSS规范1.5.1的部分。

当前的元素

  • media:content
  • media:缩略图
  • content:编码

它还会从itemDescription中提取(如果它是HTML)的所有图像,并创建一个名为imagesFromDescription的数组,您可以使用它来获取更多图像内容。

如果您需要解析更多元素,请提交一个问题,甚至更好的是,请贡献!这就是为什么它在GitHub上。

作者

唐·安吉利洛,[email protected]

灵感来源于Thibaut LE LEVIER的出色原创Block RSSParser AFNetworking插件。

许可证

AlamofireRSSParser在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。