An RSS and Atom feed parser written in Swift
FeedParser and been renamed FeedKit and moved to a new repository.
The sole reason for deprecating the FeedParser repository lies under the need to rename the framework while keeping a consistent use of it's new name. The new repository FeedKit will be under active development and maintenance.
- Atom Syndication Format
- RSS/RSS2+
- RSS-DEV Namespaces
- Dublin Core
- Syndication
- Content
- Dates Support
- RFC822
- RFC3999
- ISO8601
- 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 FeedParser
a try with an example project, run the following command:
$ pod try FeedParser
To integrate FeedParser
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 'FeedParser', '~> 3.1'
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 FeedParser into your Xcode project using Carthage, specify it in your Cartfile
:
github "nmdias/FeedParser" ~> 3.1
Build the framework:
$ carthage update
Then, drag the built FeedParser.framework
into your Xcode project.
import FeedParser
let URL = NSURL(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
NSData
andNSInputStream
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
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), {
// Run parsing in a background thread
FeedParser(URL: URL)?.parse({ (result) in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
// Perform updates to the UI
})
})
})
FeedParser is released under the MIT license. See LICENSE for details.