diff --git a/SwiftRSS/NSDate+dateFromInternetDateTimeString.swift b/SwiftRSS/NSDate+dateFromInternetDateTimeString.swift index 8d96808..1c01572 100644 --- a/SwiftRSS/NSDate+dateFromInternetDateTimeString.swift +++ b/SwiftRSS/NSDate+dateFromInternetDateTimeString.swift @@ -56,28 +56,28 @@ extension NSDate { { NSDate.internetDateFormatter.dateFormat = "EEE, d MMM yyyy HH:mm:ss zzz" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "EEE, d MMM yyyy HH:mm zzz" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "EEE, d MMM yyyy HH:mm:ss" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "EEE, d MMM yyyy HH:mm" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } } else @@ -86,28 +86,28 @@ extension NSDate { { NSDate.internetDateFormatter.dateFormat = "d MMM yyyy HH:mm:ss zzz" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "d MMM yyyy HH:mm zzz" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "d MMM yyyy HH:mm:ss" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "d MMM yyyy HH:mm" - date = NSDate.internetDateFormatter.dateFromString(rfc822_string) + date = NSDate.internetDateFormatter.dateFromString(rfc822_string as String) } } @@ -134,21 +134,21 @@ extension NSDate { { NSDate.internetDateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ" - date = NSDate.internetDateFormatter.dateFromString(rfc3339_string) + date = NSDate.internetDateFormatter.dateFromString(rfc3339_string as String) } if date == nil // this case may need more work { NSDate.internetDateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSSZZZ" - date = NSDate.internetDateFormatter.dateFromString(rfc3339_string) + date = NSDate.internetDateFormatter.dateFromString(rfc3339_string as String) } if date == nil { NSDate.internetDateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss" - date = NSDate.internetDateFormatter.dateFromString(rfc3339_string) + date = NSDate.internetDateFormatter.dateFromString(rfc3339_string as String) } if date == nil diff --git a/SwiftRSS/RSSFeed.swift b/SwiftRSS/RSSFeed.swift index 30d20c1..533d7fb 100644 --- a/SwiftRSS/RSSFeed.swift +++ b/SwiftRSS/RSSFeed.swift @@ -15,7 +15,7 @@ class RSSFeed: NSObject, NSCoding { var title: String? var link: NSURL? - func setLink(let linkString: String!) + func setLinkAsString(let linkString: String!) { link = NSURL(string: linkString) } @@ -39,7 +39,7 @@ class RSSFeed: NSObject, NSCoding { } // MARK: NSCoding - required init(coder aDecoder: NSCoder) + required init?(coder aDecoder: NSCoder) { super.init() @@ -48,46 +48,46 @@ class RSSFeed: NSObject, NSCoding { feedDescription = aDecoder.decodeObjectForKey("description") as? String language = aDecoder.decodeObjectForKey("language") as? String lastBuildDate = aDecoder.decodeObjectForKey("lastBuildDate") as? NSDate - generator = aDecoder.decodeObjectForKey("generator") as? NSString - copyright = aDecoder.decodeObjectForKey("copyright") as? NSString + generator = aDecoder.decodeObjectForKey("generator") as? String + copyright = aDecoder.decodeObjectForKey("copyright") as? String - items = aDecoder.decodeObjectForKey("items") as [RSSItem] + items = aDecoder.decodeObjectForKey("items") as! [RSSItem] } func encodeWithCoder(aCoder: NSCoder) { - if let title = self.title? + if let title = self.title { aCoder.encodeObject(title, forKey: "title") } - if let link = self.link? + if let link = self.link { aCoder.encodeObject(link, forKey: "link") } - - if let feedDescription = self.feedDescription? + + if let feedDescription = self.feedDescription { aCoder.encodeObject(feedDescription, forKey: "description") } - if let language = self.language? + if let language = self.language { aCoder.encodeObject(language, forKey: "language") } - if let lastBuildDate = self.lastBuildDate? + if let lastBuildDate = self.lastBuildDate { aCoder.encodeObject(lastBuildDate, forKey: "lastBuildDate") } - if let generator = self.generator? + if let generator = self.generator { aCoder.encodeObject(generator, forKey: "generator") } - if let copyright = self.copyright? + if let copyright = self.copyright { aCoder.encodeObject(copyright, forKey: "copyright") } diff --git a/SwiftRSS/RSSItem.swift b/SwiftRSS/RSSItem.swift index f8915f6..0261c4e 100644 --- a/SwiftRSS/RSSItem.swift +++ b/SwiftRSS/RSSItem.swift @@ -12,15 +12,15 @@ class RSSItem: NSObject, NSCoding { var title: String? var link: NSURL? - func setLink(let linkString: String!) + func setLinkAsString(let linkString: String!) { link = NSURL(string: linkString) } - + var guid: String? var pubDate: NSDate? - func setPubDate(let dateString: String!) + func setPubDateAsString(let dateString: String!) { pubDate = NSDate.dateFromInternetDateTimeString(dateString) } @@ -31,7 +31,7 @@ class RSSItem: NSObject, NSCoding { // Wordpress specifics var commentsLink: NSURL? - func setCommentsLink(let linkString: String!) + func setCommentsLinkAsString(let linkString: String!) { commentsLink = NSURL(string: linkString) } @@ -40,7 +40,7 @@ class RSSItem: NSObject, NSCoding { var commentRSSLink: NSURL? - func setCommentRSSLink(let linkString: String!) + func setCommentRSSLinkAsString(let linkString: String!) { commentRSSLink = NSURL(string: linkString) } @@ -50,7 +50,7 @@ class RSSItem: NSObject, NSCoding { var categories: [String]! = [String]() var imagesFromItemDescription: [NSURL]! { - if let itemDescription = self.itemDescription? + if let itemDescription = self.itemDescription { return itemDescription.imageLinksFromHTMLString } @@ -59,7 +59,7 @@ class RSSItem: NSObject, NSCoding { } var imagesFromContent: [NSURL]! { - if let content = self.content? + if let content = self.content { return content.imageLinksFromHTMLString } @@ -73,7 +73,7 @@ class RSSItem: NSObject, NSCoding { } // MARK: NSCoding - required init(coder aDecoder: NSCoder) + required init?(coder aDecoder: NSCoder) { super.init() @@ -81,8 +81,8 @@ class RSSItem: NSObject, NSCoding { link = aDecoder.decodeObjectForKey("link") as? NSURL guid = aDecoder.decodeObjectForKey("guid") as? String pubDate = aDecoder.decodeObjectForKey("pubDate") as? NSDate - itemDescription = aDecoder.decodeObjectForKey("description") as? NSString - content = aDecoder.decodeObjectForKey("content") as? NSString + itemDescription = aDecoder.decodeObjectForKey("description") as? String + content = aDecoder.decodeObjectForKey("content") as? String commentsLink = aDecoder.decodeObjectForKey("commentsLink") as? NSURL commentsCount = aDecoder.decodeObjectForKey("commentsCount") as? Int commentRSSLink = aDecoder.decodeObjectForKey("commentRSSLink") as? NSURL @@ -92,52 +92,52 @@ class RSSItem: NSObject, NSCoding { func encodeWithCoder(aCoder: NSCoder) { - if let title = self.title? + if let title = self.title { aCoder.encodeObject(title, forKey: "title") } - if let link = self.link? + if let link = self.link { aCoder.encodeObject(link, forKey: "link") } - - if let guid = self.guid? + + if let guid = self.guid { aCoder.encodeObject(guid, forKey: "guid") } - if let pubDate = self.pubDate? + if let pubDate = self.pubDate { aCoder.encodeObject(pubDate, forKey: "pubDate") } - if let itemDescription = self.itemDescription? + if let itemDescription = self.itemDescription { aCoder.encodeObject(itemDescription, forKey: "description") } - if let content = self.content? + if let content = self.content { aCoder.encodeObject(content, forKey: "content") } - if let commentsLink = self.commentsLink? + if let commentsLink = self.commentsLink { aCoder.encodeObject(commentsLink, forKey: "commentsLink") } - if let commentsCount = self.commentsCount? + if let commentsCount = self.commentsCount { aCoder.encodeObject(commentsCount, forKey: "commentsCount") } - if let commentRSSLink = self.commentRSSLink? + if let commentRSSLink = self.commentRSSLink { aCoder.encodeObject(commentRSSLink, forKey: "commentRSSLink") } - if let author = self.author? + if let author = self.author { aCoder.encodeObject(author, forKey: "author") } diff --git a/SwiftRSS/RSSParser.swift b/SwiftRSS/RSSParser.swift index 46f51fd..4ff68c8 100644 --- a/SwiftRSS/RSSParser.swift +++ b/SwiftRSS/RSSParser.swift @@ -54,7 +54,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { { self.callbackClosure = callback - var parser : NSXMLParser = NSXMLParser(data: data) + let parser : NSXMLParser = NSXMLParser(data: data!) parser.delegate = self parser.shouldResolveExternalEntities = false parser.parse() @@ -69,13 +69,13 @@ class RSSParser: NSObject, NSXMLParserDelegate { func parserDidEndDocument(parser: NSXMLParser) { - if let closure = self.callbackClosure? + if let closure = self.callbackClosure { closure(feed: self.feed, error: nil) } } - func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) { + func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { if elementName == node_item { @@ -90,7 +90,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { if elementName == node_item { - if let item = self.currentItem? + if let item = self.currentItem { self.feed.items.append(item) } @@ -99,7 +99,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { return } - if let item = self.currentItem? + if let item = self.currentItem { if elementName == node_title { @@ -108,7 +108,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { if elementName == node_link { - item.setLink(self.currentElement) + item.setLinkAsString(self.currentElement) } if elementName == node_guid @@ -118,7 +118,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { if elementName == node_publicationDate { - item.setPubDate(self.currentElement) + item.setPubDateAsString(self.currentElement) } if elementName == node_description @@ -133,17 +133,17 @@ class RSSParser: NSObject, NSXMLParserDelegate { if elementName == node_commentsLink { - item.setCommentsLink(self.currentElement) + item.setCommentsLinkAsString(self.currentElement) } if elementName == node_commentsCount { - item.commentsCount = self.currentElement.toInt() + item.commentsCount = Int(self.currentElement) } if elementName == node_commentRSSLink { - item.setCommentRSSLink(self.currentElement) + item.setCommentRSSLinkAsString(self.currentElement) } if elementName == node_author @@ -166,7 +166,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { if elementName == node_link { - feed.setLink(self.currentElement) + feed.setLinkAsString(self.currentElement) } if elementName == node_description @@ -202,7 +202,7 @@ class RSSParser: NSObject, NSXMLParserDelegate { func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) { - if let closure = self.callbackClosure? + if let closure = self.callbackClosure { closure(feed: nil, error: parseError) } diff --git a/SwiftRSS/String+imageLinksFromHTML.swift b/SwiftRSS/String+imageLinksFromHTML.swift index 578f766..2ad487c 100644 --- a/SwiftRSS/String+imageLinksFromHTML.swift +++ b/SwiftRSS/String+imageLinksFromHTML.swift @@ -15,19 +15,21 @@ extension String { var error: NSError? - var full_range: NSRange = NSMakeRange(0, countElements(self)) + var full_range: NSRange = NSMakeRange(0, self.characters.count) - if let regex = NSRegularExpression(pattern:"(https?)\\S*(png|jpg|jpeg|gif)", options:.CaseInsensitive, error:&error) - { - regex.enumerateMatchesInString(self, options: NSMatchingOptions(0), range: full_range) { - (result : NSTextCheckingResult!, _, _) in + do { + let regex = try NSRegularExpression(pattern:"(https?)\\S*(png|jpg|jpeg|gif)", options:.CaseInsensitive) + regex.enumerateMatchesInString(self, options: NSMatchingOptions(rawValue: 0), range: full_range) { + (result : NSTextCheckingResult?, _, _) in // didn't find a way to bridge an NSRange to Range // bridging String to NSString instead - var str = (self as NSString).substringWithRange(result.range) as String + var str = (self as NSString).substringWithRange(result!.range) as String matches.append(NSURL(string: str)!) } + } catch var error1 as NSError { + error = error1 } return matches diff --git a/SwiftRSS_Example.xcodeproj/project.pbxproj b/SwiftRSS_Example.xcodeproj/project.pbxproj index d7cf803..143947f 100644 --- a/SwiftRSS_Example.xcodeproj/project.pbxproj +++ b/SwiftRSS_Example.xcodeproj/project.pbxproj @@ -222,6 +222,8 @@ 119025CE19B92DA1009184BE /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftMigration = 0700; + LastSwiftUpdateCheck = 0700; LastUpgradeCheck = 0600; ORGANIZATIONNAME = "Thibaut LE LEVIER"; TargetAttributes = { diff --git a/SwiftRSS_Example.xcodeproj/project.xcworkspace/xcuserdata/shripada.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftRSS_Example.xcodeproj/project.xcworkspace/xcuserdata/shripada.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..fe49b61 Binary files /dev/null and b/SwiftRSS_Example.xcodeproj/project.xcworkspace/xcuserdata/shripada.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/SwiftRSS_Example.xcodeproj/xcuserdata/shripada.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SwiftRSS_Example.xcodeproj/xcuserdata/shripada.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..f6c4664 --- /dev/null +++ b/SwiftRSS_Example.xcodeproj/xcuserdata/shripada.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/SwiftRSS_Example.xcodeproj/xcuserdata/shripada.xcuserdatad/xcschemes/xcschememanagement.plist b/SwiftRSS_Example.xcodeproj/xcuserdata/shripada.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9550d3a --- /dev/null +++ b/SwiftRSS_Example.xcodeproj/xcuserdata/shripada.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SuppressBuildableAutocreation + + 114E26BD19BA399B00D292F3 + + primary + + + 119025D519B92DA1009184BE + + primary + + + + + diff --git a/SwiftRSS_Example/AppDelegate.swift b/SwiftRSS_Example/AppDelegate.swift index d5a6913..211e936 100644 --- a/SwiftRSS_Example/AppDelegate.swift +++ b/SwiftRSS_Example/AppDelegate.swift @@ -16,9 +16,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. - let splitViewController = self.window!.rootViewController as UISplitViewController - let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as UINavigationController - navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem() + let splitViewController = self.window!.rootViewController as! UISplitViewController + let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController + navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem() splitViewController.delegate = self return true } @@ -47,7 +47,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele // MARK: - Split view - func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController!, ontoPrimaryViewController primaryViewController:UIViewController!) -> Bool { + func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController, ontoPrimaryViewController primaryViewController:UIViewController) -> Bool { if let secondaryAsNavController = secondaryViewController as? UINavigationController { if let topAsDetailController = secondaryAsNavController.topViewController as? DetailViewController { if topAsDetailController.detailItem == nil { diff --git a/SwiftRSS_Example/DetailViewController.swift b/SwiftRSS_Example/DetailViewController.swift index c4a04a4..1f19005 100644 --- a/SwiftRSS_Example/DetailViewController.swift +++ b/SwiftRSS_Example/DetailViewController.swift @@ -25,26 +25,29 @@ class DetailViewController: UIViewController { { if let webView = self.itemWebView { - - if let templateURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("template", ofType: "html")!)? + let templateURLP = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("template", ofType: "html")!) + + let templateURL : NSURL? = templateURLP + + if (templateURL != nil) { - if var template = NSString(contentsOfURL: templateURL, encoding: NSUTF8StringEncoding, error: nil)? - { - if let title = item.title? + var template = try! NSString(contentsOfURL: templateURL!, encoding: NSUTF8StringEncoding) + + if let title = item.title { template = template.stringByReplacingOccurrencesOfString("###TITLE###", withString: title) } - if let content = item.content? + if let content = item.content { template = template.stringByReplacingOccurrencesOfString("###CONTENT###", withString: content) } - else if let description = item.itemDescription? + else if let description = item.itemDescription { template = template.stringByReplacingOccurrencesOfString("###CONTENT###", withString: description) } - if let date = item.pubDate? + if let date = item.pubDate { var formatter = NSDateFormatter() formatter.dateFormat = "MMM dd, yyyy" @@ -52,17 +55,17 @@ class DetailViewController: UIViewController { template = template.stringByReplacingOccurrencesOfString("###DATE###", withString: formatter.stringFromDate(date)) } - webView.loadHTMLString(template, baseURL: nil) - } + webView.loadHTMLString(template as String, baseURL: nil) + } else { - if let content = item.content? + if let content = item.content { webView.loadHTMLString(content, baseURL: nil) } - else if let description = item.itemDescription? + else if let description = item.itemDescription { webView.loadHTMLString(description, baseURL: nil) } diff --git a/SwiftRSS_Example/MasterViewController.swift b/SwiftRSS_Example/MasterViewController.swift index 74513d7..2669486 100644 --- a/SwiftRSS_Example/MasterViewController.swift +++ b/SwiftRSS_Example/MasterViewController.swift @@ -28,15 +28,16 @@ class MasterViewController: UITableViewController { if let split = self.splitViewController { let controllers = split.viewControllers - self.detailViewController = controllers[controllers.count-1].topViewController as? DetailViewController + + self.detailViewController = controllers[controllers.count-1] as? DetailViewController } let request = NSURLRequest(URL: NSURL(string: "http://developer.apple.com/swift/blog/news.rss")!) RSSParser.parseFeedForRequest(request, callback: { (feed, error) -> Void in - if let myFeed = feed? + if let myFeed = feed { - if let title = myFeed.title? + if let title = myFeed.title { self.title = title } @@ -56,12 +57,12 @@ class MasterViewController: UITableViewController { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "showDetail" { - if let indexPath = self.tableView.indexPathForSelectedRow() { + if let indexPath = self.tableView.indexPathForSelectedRow { - if let feed = self.feed? + if let feed = self.feed { let item = feed.items[indexPath.row] as RSSItem - let controller = (segue.destinationViewController as UINavigationController).topViewController as DetailViewController + let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController controller.detailItem = item controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() controller.navigationItem.leftItemsSupplementBackButton = true @@ -78,7 +79,7 @@ class MasterViewController: UITableViewController { override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if let feed = self.feed? + if let feed = self.feed { return feed.items.count } @@ -89,11 +90,11 @@ class MasterViewController: UITableViewController { override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell - if let feed = self.feed? + if let feed = self.feed { let item = feed.items[indexPath.row] as RSSItem - cell.textLabel.text = item.title + cell.textLabel!.text = item.title } return cell diff --git a/Tests/NSDate+dateFromInternetDateTimeString_Tests.swift b/Tests/NSDate+dateFromInternetDateTimeString_Tests.swift index fdfd29a..c3470ae 100644 --- a/Tests/NSDate+dateFromInternetDateTimeString_Tests.swift +++ b/Tests/NSDate+dateFromInternetDateTimeString_Tests.swift @@ -13,7 +13,7 @@ class NSDateExtension_Tests: XCTestCase { let GMT_timeZone: NSTimeZone! = NSTimeZone(forSecondsFromGMT: 0) let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSGregorianCalendar) - let calendar_flags = NSCalendarUnit(UInt.max) + let calendar_flags = NSCalendarUnit(rawValue: UInt.max) override func setUp() { super.setUp() @@ -30,7 +30,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "Sun, 19 May 2002 15:21:36 GMT" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -53,7 +53,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "Sun, 19 May 2002 15:21 GMT" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -76,7 +76,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "Sun, 19 May 2002 15:21:36" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -98,7 +98,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "Sun, 19 May 2002 15:21" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -120,7 +120,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "19 May 2002 15:21:36 GMT" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -142,7 +142,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "19 May 2002 15:21 GMT" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -164,7 +164,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "19 May 2002 15:21:36" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -185,7 +185,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "19 May 2002 15:21" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -210,7 +210,7 @@ class NSDateExtension_Tests: XCTestCase { let timeZone = NSTimeZone(forSecondsFromGMT: -60*60*8) calendar.timeZone = timeZone - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -234,7 +234,7 @@ class NSDateExtension_Tests: XCTestCase { let timeZone = NSTimeZone(forSecondsFromGMT: 60*60*2) calendar.timeZone = timeZone - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) @@ -257,7 +257,7 @@ class NSDateExtension_Tests: XCTestCase { let dateString = "1937-01-01T12:00:27" - if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString)? + if let date: NSDate = NSDate.dateFromInternetDateTimeString(dateString) { var dateComponent = calendar.components(calendar_flags, fromDate: date) diff --git a/Tests/RSSFeed_Tests.swift b/Tests/RSSFeed_Tests.swift index 9cdb6a0..aae6003 100644 --- a/Tests/RSSFeed_Tests.swift +++ b/Tests/RSSFeed_Tests.swift @@ -23,10 +23,10 @@ class RSSFeed_Tests: XCTestCase { func test_setLink_withAValidURLString_shouldCreateAValidURL() { - var item: RSSItem = RSSItem() - item.setLink("http://www.apple.com") + let item: RSSItem = RSSItem() + item.setLinkAsString("http://www.apple.com") - if let link = item.link? + if let link = item.link { XCTAssert(true, "link is valid") } @@ -42,7 +42,7 @@ class RSSFeed_Tests: XCTestCase { var feed: RSSFeed = RSSFeed() feed.title = "Feed title" - feed.setLink("http://www.swift.io") + feed.setLinkAsString("http://www.swift.io") feed.feedDescription = "Description of the feed" feed.language = "fr" feed.lastBuildDate = NSDate() @@ -52,13 +52,13 @@ class RSSFeed_Tests: XCTestCase { var item: RSSItem = RSSItem() item.title = "Hello" - item.setLink("http://www.apple.com") + item.setLinkAsString("http://www.apple.com") item.guid = "1234" item.pubDate = NSDate() item.itemDescription = "Big Description" item.content = "Here is the content" - item.setCommentsLink("http://www.test.com") - item.setCommentRSSLink("http://www.whatever.com/") + item.setCommentsLinkAsString("http://www.test.com") + item.setCommentRSSLinkAsString("http://www.whatever.com/") item.commentsCount = 666 item.author = "John Doe" item.categories = ["One","Two","Tree"] @@ -68,13 +68,13 @@ class RSSFeed_Tests: XCTestCase { var item2: RSSItem = RSSItem() item2.title = "Hello2" - item2.setLink("http://www.google.com") + item2.setLinkAsString("http://www.google.com") item2.guid = "5678" item2.pubDate = NSDate() item2.itemDescription = "Big Description Again" item2.content = "Here is the content for the second item" - item2.setCommentsLink("http://www.testing.com") - item2.setCommentRSSLink("http://www.whateveragain.com/") + item2.setCommentsLinkAsString("http://www.testing.com") + item2.setCommentRSSLinkAsString("http://www.whateveragain.com/") item2.commentsCount = 42 item2.author = "Jane Doe" item2.categories = ["Four","Five","Six"] @@ -85,7 +85,7 @@ class RSSFeed_Tests: XCTestCase { NSKeyedArchiver.archiveRootObject(feed, toFile: archive) - var feed2 = NSKeyedUnarchiver.unarchiveObjectWithFile(archive) as RSSFeed + var feed2 = NSKeyedUnarchiver.unarchiveObjectWithFile(archive) as! RSSFeed XCTAssert(feed.title == feed2.title, "") XCTAssert(feed.link == feed2.link, "") diff --git a/Tests/RSSItem_Tests.swift b/Tests/RSSItem_Tests.swift index e967c33..e30648b 100644 --- a/Tests/RSSItem_Tests.swift +++ b/Tests/RSSItem_Tests.swift @@ -23,10 +23,10 @@ class RSSItem_Tests: XCTestCase { func test_setLink_withAValidURLString_shouldCreateAValidURL() { - var item: RSSItem = RSSItem() - item.setLink("http://www.apple.com") + let item: RSSItem = RSSItem() + item.setLinkAsString("http://www.apple.com") - if let link = item.link? + if let link = item.link { XCTAssert(true, "link is valid") } @@ -42,13 +42,13 @@ class RSSItem_Tests: XCTestCase { var item: RSSItem = RSSItem() item.title = "Hello" - item.setLink("http://www.apple.com") + item.setLinkAsString("http://www.apple.com") item.guid = "1234" item.pubDate = NSDate() item.itemDescription = "Big Description" item.content = "Here is the content" - item.setCommentsLink("http://www.test.com") - item.setCommentRSSLink("http://www.whatever.com/") + item.setCommentsLinkAsString("http://www.test.com") + item.setCommentRSSLinkAsString("http://www.whatever.com/") item.commentsCount = 666 item.author = "John Doe" item.categories = ["One","Two","Tree"] @@ -57,7 +57,7 @@ class RSSItem_Tests: XCTestCase { NSKeyedArchiver.archiveRootObject(item, toFile: archive) - var item2 = NSKeyedUnarchiver.unarchiveObjectWithFile(archive) as RSSItem + var item2 = NSKeyedUnarchiver.unarchiveObjectWithFile(archive) as! RSSItem XCTAssert(item.title == item2.title, "") XCTAssert(item.link == item2.link, "") diff --git a/Tests/RSSParser_Tests.swift b/Tests/RSSParser_Tests.swift index b2532c3..e71b7ff 100644 --- a/Tests/RSSParser_Tests.swift +++ b/Tests/RSSParser_Tests.swift @@ -21,7 +21,7 @@ class RSSParser_Tests: XCTestCase { let GMT_timeZone: NSTimeZone! = NSTimeZone(name: "GMT") let DST_timeZone: NSTimeZone! = NSTimeZone(forSecondsFromGMT: 60 * 60 * -4) let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSGregorianCalendar) - let calendar_flags = NSCalendarUnit(UInt.max) + let calendar_flags = NSCalendarUnit(rawValue: UInt.max) override func setUp() { super.setUp() @@ -33,7 +33,7 @@ class RSSParser_Tests: XCTestCase { func test_parser_withValidMock_shouldReturnTheRightValues() { - let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: mockFileURL!)!) + let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: mockFileURL!)) let expectation = self.expectationWithDescription("GET \(request.URL)") RSSParser.parseFeedForRequest(request, callback: { (feed, error) -> Void in @@ -44,10 +44,10 @@ class RSSParser_Tests: XCTestCase { XCTAssertNil(error, "error should be nil") - if let testFeed = feed? + if let testFeed = feed { XCTAssert(testFeed.title == "Swift Blog - Apple Developer", "") - if let link = testFeed.link? + if let link = testFeed.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/", "") } @@ -55,7 +55,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(testFeed.language == "en-US", "") - if let date = testFeed.lastBuildDate? + if let date = testFeed.lastBuildDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -82,7 +82,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Building assert() in Swift, Part 2: __FILE__ and __LINE__ ", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=15", "") } @@ -93,7 +93,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=15", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -118,7 +118,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Swift Has Reached 1.0", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=14", "") } @@ -129,7 +129,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=14", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -154,7 +154,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Patterns Playground", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=13", "") } @@ -165,7 +165,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=13", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -190,7 +190,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Optionals Case Study: valuesForKeys ", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=12", "") } @@ -201,7 +201,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=12", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -226,7 +226,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Access Control and protected ", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=11", "") } @@ -237,7 +237,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=11", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -262,7 +262,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Value and Reference Types", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=10", "") } @@ -273,7 +273,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=10", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -297,8 +297,8 @@ class RSSParser_Tests: XCTestCase { myItem = testFeed.items[6] XCTAssert(myItem.title == "Balloons", "") - - if let link = myItem.link? + + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=9", "") } @@ -309,7 +309,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=9", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -362,7 +362,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Welcome to Swift Blog", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://developer.apple.com/swift/blog/?id=1", "") } @@ -373,7 +373,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://developer.apple.com/swift/blog/?id=1", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -403,7 +403,7 @@ class RSSParser_Tests: XCTestCase { func test_parser_withWordpressMock_shouldReturnTheRightValues() { - let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: wordpressMockFileURL!)!) + let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: wordpressMockFileURL!)) let expectation = self.expectationWithDescription("GET \(request.URL)") RSSParser.parseFeedForRequest(request, callback: { (feed, error) -> Void in @@ -415,12 +415,12 @@ class RSSParser_Tests: XCTestCase { XCTAssertNil(error, "error should be nil") - if let testFeed = feed? + if let testFeed = feed { XCTAssertTrue(testFeed.items.count == 10, "should have 10 items") XCTAssert(testFeed.title == "WordPress.com News", "") - if let link = testFeed.link? + if let link = testFeed.link { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com", "") } @@ -428,7 +428,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(testFeed.language == "en", "") - if let date = testFeed.lastBuildDate? + if let date = testFeed.lastBuildDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -453,7 +453,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Engaged, Inspired, and Ready to Build a Better Web", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com/2014/09/30/grand-meetup-reflections/", "") } @@ -464,7 +464,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://en.blog.wordpress.com/?p=28737", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -488,7 +488,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.imagesFromItemDescription.count == 1, "") XCTAssert(myItem.imagesFromItemDescription[0].absoluteString == "http://pixel.wp.com/b.gif", "") - if let link = myItem.commentsLink? + if let link = myItem.commentsLink { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com/2014/09/30/grand-meetup-reflections/#comments", "") } @@ -497,7 +497,7 @@ class RSSParser_Tests: XCTestCase { XCTFail("link shouldn't be nil") } - if let link = myItem.commentRSSLink? + if let link = myItem.commentRSSLink { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com/2014/09/30/grand-meetup-reflections/feed/", "") } @@ -510,16 +510,16 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.author == "Michelle W.", "") - XCTAssert(contains(myItem.categories, "Automattic"),"") - XCTAssert(contains(myItem.categories, "Hiring"),"") - XCTAssert(contains(myItem.categories, "distributed work"),"") - XCTAssert(contains(myItem.categories, "future of work"),"") + XCTAssert(myItem.categories.contains("Automattic"),"") + XCTAssert(myItem.categories.contains("Hiring"),"") + XCTAssert(myItem.categories.contains("distributed work"),"") + XCTAssert(myItem.categories.contains("future of work"),"") myItem = testFeed.items[6] XCTAssert(myItem.title == "Gmail Password Leak Update", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com/2014/09/12/gmail-password-leak-update/", "") } @@ -530,7 +530,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://en.blog.wordpress.com/?p=28615", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -554,7 +554,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.imagesFromItemDescription.count == 1, "") XCTAssert(myItem.imagesFromItemDescription[0].absoluteString == "http://pixel.wp.com/b.gif", "") - if let link = myItem.commentsLink? + if let link = myItem.commentsLink { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com/2014/09/12/gmail-password-leak-update/#comments", "") } @@ -563,7 +563,7 @@ class RSSParser_Tests: XCTestCase { XCTFail("link shouldn't be nil") } - if let link = myItem.commentRSSLink? + if let link = myItem.commentRSSLink { XCTAssert(link.absoluteString == "http://en.blog.wordpress.com/2014/09/12/gmail-password-leak-update/feed/", "") } @@ -576,9 +576,9 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.author == "Daryl L. L. Houston", "") - XCTAssert(contains(myItem.categories, "Notifications"),"") - XCTAssert(contains(myItem.categories, "Security"),"") - XCTAssert(contains(myItem.categories, "security"),"") + XCTAssert(myItem.categories.contains("Notifications"),"") + XCTAssert(myItem.categories.contains("Security"),"") + XCTAssert(myItem.categories.contains("security"),"") myItem = testFeed.items[2] @@ -604,7 +604,7 @@ class RSSParser_Tests: XCTestCase { func test_parser_withTumblrMock_shouldReturnTheRightValues() { - let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: tumblrMockFileURL!)!) + let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: tumblrMockFileURL!)) let expectation = self.expectationWithDescription("GET \(request.URL)") RSSParser.parseFeedForRequest(request, callback: { (feed, error) -> Void in @@ -615,12 +615,12 @@ class RSSParser_Tests: XCTestCase { XCTAssertNil(error, "error should be nil") - if let testFeed = feed? + if let testFeed = feed { XCTAssertTrue(testFeed.items.count == 20, "should have 20 items") XCTAssert(testFeed.title == "Tumblr Engineering", "") - if let link = testFeed.link? + if let link = testFeed.link { XCTAssert(link.absoluteString == "http://engineering.tumblr.com/", "") } @@ -632,7 +632,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Sam Giddins: My Summer at TumblrThis summer, I had the immense...", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://engineering.tumblr.com/post/98331642904", "") } @@ -643,7 +643,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://engineering.tumblr.com/post/98331642904", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -670,7 +670,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.title == "Megan Belzner: My Summer at TumblrThis summer I got the amazing...", "") - if let link = myItem.link? + if let link = myItem.link { XCTAssert(link.absoluteString == "http://engineering.tumblr.com/post/98050002584", "") } @@ -681,7 +681,7 @@ class RSSParser_Tests: XCTestCase { XCTAssert(myItem.guid == "http://engineering.tumblr.com/post/98050002584", "") - if let date = myItem.pubDate? + if let date = myItem.pubDate { var dateComponent = self.calendar.components(self.calendar_flags, fromDate: date) @@ -715,7 +715,7 @@ class RSSParser_Tests: XCTestCase { func test_parser_withInvalidMock_shouldReturnParsingError() { - let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: invalidMockFileURL!)!) + let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: invalidMockFileURL!)) let expectation = self.expectationWithDescription("GET \(request.URL)") RSSParser.parseFeedForRequest(request, callback: { (feed, error) -> Void in @@ -753,7 +753,7 @@ class RSSParser_Tests: XCTestCase { func test_parser_withEmptyMock_shouldBehaveProperly() { - let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: emptyMockFileURL!)!) + let request: NSURLRequest = NSURLRequest(URL: NSURL(fileURLWithPath: emptyMockFileURL!)) let expectation = self.expectationWithDescription("GET \(request.URL)") RSSParser.parseFeedForRequest(request, callback: { (feed, error) -> Void in