FeedKit 9.1.2

FeedKit 9.1.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2020年4月
SPM支持 SPM

Nuno Manuel Dias 维护。



FeedKit 9.1.2

  • Nuno Manuel Dias

FeedKit

build status cocoapods compatible carthage compatible language swift

特性

要求

xcode ios tvos watchos mac os mac os

安装 >> 说明 <<

用法

构造一个指向 RSS、Atom 或 JSON 聚合的 URL。

let feedURL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!

获取一个 FeedParser 的实例

let parser = FeedParser(URL: feedURL) // or FeedParser(data: data) or FeedParser(xmlStream: stream)

然后调用 parseparseAsync 开始解析聚合...

在 UI 环境中的一个常见场景是解析由用户操作触发的聚合,例如按钮的触摸。例如。

// Parse asynchronously, not to block the UI.
parser.parseAsync(queue: DispatchQueue.global(qos: .userInitiated)) { (result) in
    // Do your thing, then back to the Main thread
    DispatchQueue.main.async {
        // ..and update the UI
    }
}

请记住,您需要手动将结果闭包带到合适的队列中。通常对 UI 应用,通过调用 DispatchQueue.main.async 将其带到主线程。

或者,您也可以同步解析。

let result = parser.parse()

解析结果

FeedKit采用Swift 5的Result类型,作为Result<Feed, ParserError>,如果解析成功,你现在应该有一个强类型模型,表示一个RSSAtomJSON Feed,位于Feed枚举中

switch result {
case .success(let feed):
    
    // Grab the parsed feed directly as an optional rss, atom or json feed object
    feed.rssFeed
    
    // Or alternatively...
    switch feed {
    case let .atom(feed):       // Atom Syndication Format Feed Model
    case let .rss(feed):        // Really Simple Syndication Feed Model
    case let .json(feed):       // JSON Feed Model
    }
    
case .failure(let error):
    print(error)
}

模型预览

RSS和Atom内容模型覆盖了支持的命名空间。这些只是对可用的内容的预览。

RSS

feed.title
feed.link
feed.description
feed.language
feed.copyright
feed.managingEditor
feed.webMaster
feed.pubDate
feed.lastBuildDate
feed.categories
feed.generator
feed.docs
feed.cloud
feed.rating
feed.ttl
feed.image
feed.textInput
feed.skipHours
feed.skipDays
//...
feed.dublinCore
feed.syndication
feed.iTunes
// ...

let item = feed.items?.first

item?.title
item?.link
item?.description
item?.author
item?.categories
item?.comments
item?.enclosure
item?.guid
item?.pubDate
item?.source
//...
item?.dublinCore
item?.content
item?.iTunes
item?.media
// ...

Atom

feed.title
feed.subtitle
feed.links
feed.updated
feed.authors
feed.contributors
feed.id
feed.generator
feed.icon
feed.logo
feed.rights
// ...

let entry = feed.entries?.first

entry?.title
entry?.summary
entry?.authors
entry?.contributors
entry?.links
entry?.updated
entry?.categories
entry?.id
entry?.content
entry?.published
entry?.source
entry?.rights
// ...

JSON

feed.version
feed.title
feed.homePageURL
feed.feedUrl
feed.description
feed.userComment
feed.nextUrl
feed.icon
feed.favicon
feed.author
feed.expired
feed.hubs
feed.extensions
// ...

let item = feed.items?.first

item?.id
item?.url
item?.externalUrl
item?.title
item?.contentText
item?.contentHtml
item?.summary
item?.image
item?.bannerImage
item?.datePublished
item?.dateModified
item?.author
item?.url
item?.tags
item?.attachments
item?.extensions
// ...

许可

FeedKit遵从MIT许可协议。详细信息请参阅LICENSE