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 cocoapodsTo give FeedParser a try with an example project, run the following command:
$ pod try FeedParserTo 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'
endThen, run the following command:
$ pod installCarthage 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 carthageTo integrate FeedParser into your Xcode project using Carthage, specify it in your Cartfile:
github "nmdias/FeedParser" ~> 3.1
Build the framework:
$ carthage updateThen, 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
NSDataandNSInputStreamobjects.
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
RSSFeeddocumentation 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
AtomFeeddocumentation 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.