An RSS and Atom feed parser written in Swift
- Atom Syndication Format
- RSS/RSS2+
- RSS-DEV Namespaces
- Dublin Core
- Syndication
- Content
- Dates Support
- RFC822
- RFC3999
- ISO8601
- iTunes Podcasting Tags
- Documentation
- Unit Test Coverage
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. You can install it with the following command:
$ gem install cocoapods
To give FeedKit
a try with an example project, run the following command:
$ pod try FeedKit
To integrate FeedKit
into your Xcode project, specify it in your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'FeedKit', '~> 5.0'
end
Then, run the following command:
$ pod install
Carthage is a dependency manager that builds your dependencies and provides you with binary frameworks.
To install Carthage with Homebrew use the following command:
$ brew update
$ brew install carthage
To integrate FeedKit into your Xcode project using Carthage, specify it in your Cartfile
:
github "nmdias/FeedKit" ~> 5.0
Build the framework:
$ carthage update
Then, drag the built FeedKit.framework
into your Xcode project.
Drag FeedKit.xcodeproj
into your Xcode project.
It should appear nested underneath your application's blue project icon.
Click on the +
button under the "Embedded Binaries" section of your app's target and select the FeedKit.framework
that matches the desired platform.
import FeedKit
let URL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!
FeedParser(URL: URL)?.parse({ (result) in
result.rssFeed // An `RSSFeed` model
})
FeedParser(URL: URL)?.parse({ (result) in
result.atomFeed // An `AtomFeed` model
})
Aditional initializers can also be found for
Data
andInputStream
objects.
Multiple FeedType
's and, or Error handling
can be acomplished using the Result
enum
FeedParser(URL: URL)?.parse({ (result) in
switch result {
case .RSS(let rssFeed):
print(rssFeed) // An `RSSFeed` model
case .Atom(let atomFeed):
print(atomFeed) // An `AtomFeed` model
case .Failure(let error):
print(error) // An `NSError` object
}
})
FeedParser(URL: URL)?.parse({ (result) in
guard let feed = result.rssFeed where result.isSuccess else {
print(result.error)
return
}
print(feed.title) // The feed's `Title`
print(feed.items?.count) // The number of articles
print(feed.items?.first?.title) // The feed's first article `Title`
print(feed.items?.first?.description) // The feed's first article `Description`
print(feed.items?.first?.pubDate) // The feed's first article `Publication Date`
})
Refer to the
RSSFeed
documentation for the complete model properties and description
FeedParser(URL: URL)?.parse({ (result) in
guard let feed = result.atomFeed where result.isSuccess else {
print(result.error)
return
}
print(feed.title) // The feed's `Title`
print(feed.entries?.count) // The number of articles
print(feed.entries?.first?.title) // The feed's first article `Title`
print(feed.entries?.first?.summary) // The feed's first article `Summary`
print(feed.entries?.first?.updated) // The feed's first article `Updated Date`
})
Refer to the
AtomFeed
documentation for the complete model properties and description
DispatchQueue.global(qos: .userInitiated).async {
// Run parsing in a background thread
FeedParser(URL: URL)?.parse({ (result) in
DispatchQueue.main.async {
// Perform updates in the main thread when finished
}
})
}
FeedKit is released under the MIT license. See LICENSE for details.