AlamofireRSSParser
需求
- 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.swift
的 dependencies
值一样简单。
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文件。