From 0e20d4cb7246eeec236f95ec49f9e98e62a9fce6 Mon Sep 17 00:00:00 2001 From: Yuri Mikhaylov Date: Wed, 21 Oct 2015 13:25:22 +0300 Subject: [PATCH 1/5] Updated code for Swift 2 --- AsyncUITableview/AppDelegate.swift | 5 ++- AsyncUITableview/MyTableViewCell.swift | 4 +-- AsyncUITableview/MyTableViewController.swift | 34 ++++++++++---------- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/AsyncUITableview/AppDelegate.swift b/AsyncUITableview/AppDelegate.swift index deea2b6..12f959f 100644 --- a/AsyncUITableview/AppDelegate.swift +++ b/AsyncUITableview/AppDelegate.swift @@ -12,9 +12,8 @@ import UIKit class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - - - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/AsyncUITableview/MyTableViewCell.swift b/AsyncUITableview/MyTableViewCell.swift index a5b6bce..20a60ff 100644 --- a/AsyncUITableview/MyTableViewCell.swift +++ b/AsyncUITableview/MyTableViewCell.swift @@ -10,6 +10,6 @@ import UIKit class MyTableViewCell: UITableViewCell { - @IBOutlet var img : UIImageView - @IBOutlet var lbl : UILabel + @IBOutlet var img : UIImageView! + @IBOutlet var lbl : UILabel! } diff --git a/AsyncUITableview/MyTableViewController.swift b/AsyncUITableview/MyTableViewController.swift index db24810..a148f23 100644 --- a/AsyncUITableview/MyTableViewController.swift +++ b/AsyncUITableview/MyTableViewController.swift @@ -12,9 +12,9 @@ import Foundation class MyTableViewController: UITableViewController { let PageSize = 20 - var items:MyItem[] = [] + var items:[MyItem] = [] var isLoading = false - @IBOutlet var MyFooterView : UIView + @IBOutlet var MyFooterView : UIView! override func viewDidLoad() { super.viewDidLoad() @@ -25,7 +25,7 @@ class MyTableViewController: UITableViewController { return From + Int(arc4random_uniform(UInt32(To - From + 1))) } - class MyItem : Printable { + class MyItem : CustomStringConvertible { let name:String! init(name:String) { @@ -38,7 +38,7 @@ class MyTableViewController: UITableViewController { } class DataManager { - func requestData(offset:Int, size:Int, listener:(MyItem[]) -> ()) { + func requestData(offset:Int, size:Int, listener:([MyItem]) -> ()) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { //Sleep the Process @@ -47,12 +47,12 @@ class MyTableViewController: UITableViewController { } //generate items - var arr:MyItem[] = [] + var arr:[MyItem] = [] for i in offset...(offset + size) { - arr += MyItem(name: "Item " + String(i)) + arr.append(MyItem(name: "Item " + String(i))) } - println(arr) + print(arr) //call listener in main thread dispatch_async(dispatch_get_main_queue()) { @@ -65,11 +65,11 @@ class MyTableViewController: UITableViewController { func loadSegment(offset:Int, size:Int) { if (!self.isLoading) { self.isLoading = true - self.MyFooterView.hidden = (offset==0) ? true : false + self.MyFooterView!.hidden = (offset==0) ? true : false let manager = DataManager() manager.requestData(offset, size: size, - listener: {(items:MyTableViewController.MyItem[]) -> () in + listener: {(items:[MyTableViewController.MyItem]) -> () in /* //You can also Reload all the Data using below code. @@ -92,7 +92,7 @@ class MyTableViewController: UITableViewController { for item in items { var row = self.items.count var indexPath = NSIndexPath(forRow:row,inSection:0) - self.items += item + self.items.append(item) self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) } self.isLoading = false @@ -103,8 +103,8 @@ class MyTableViewController: UITableViewController { } override func scrollViewDidScroll(scrollView: UIScrollView!) { - var offset = scrollView.contentOffset.y - var maxOffset = scrollView.contentSize.height - scrollView.frame.size.height + let offset = scrollView.contentOffset.y + let maxOffset = scrollView.contentSize.height - scrollView.frame.size.height if (maxOffset - offset) <= 40 { loadSegment(items.count, size: PageSize-1) } @@ -120,13 +120,13 @@ class MyTableViewController: UITableViewController { override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat { return 85; } - override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? { - let cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as MyTableViewCell - + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MyTableViewCell + //Configure the cell... var imagename = UTILITY.getRandomNumberBetween(1, To: 10).description + ".png" - cell.img.image = UIImage(named:imagename) as UIImage - cell.lbl.text = items[indexPath.row].name as String + cell.img.image = UIImage(named:imagename) + cell.lbl.text = items[indexPath.row].name return cell } } From 5a52a14be2e4bfb7a16f8b4b55185d8e92799ab8 Mon Sep 17 00:00:00 2001 From: Yuri Mikhaylov Date: Wed, 21 Oct 2015 13:25:38 +0300 Subject: [PATCH 2/5] Updated project settings for Xcode 7 --- AsyncUITableview.xcodeproj/project.pbxproj | 9 +- .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/AsyncUITableview.xcscheme | 101 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 +++++ AsyncUITableview/Info.plist | 2 +- AsyncUITableviewTests/Info.plist | 6 +- 6 files changed, 145 insertions(+), 5 deletions(-) create mode 100644 AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme create mode 100644 AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/AsyncUITableview.xcodeproj/project.pbxproj b/AsyncUITableview.xcodeproj/project.pbxproj index dbc4f26..3e90fd3 100644 --- a/AsyncUITableview.xcodeproj/project.pbxproj +++ b/AsyncUITableview.xcodeproj/project.pbxproj @@ -211,7 +211,9 @@ 8DA65D6C198E3F71005EE11F /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftMigration = 0700; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Jigar M"; TargetAttributes = { 8DA65D73198E3F71005EE11F = { @@ -340,6 +342,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -406,6 +409,7 @@ INFOPLIST_FILE = AsyncUITableview/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -419,6 +423,7 @@ INFOPLIST_FILE = AsyncUITableview/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -438,6 +443,7 @@ INFOPLIST_FILE = AsyncUITableviewTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -454,6 +460,7 @@ INFOPLIST_FILE = AsyncUITableviewTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; diff --git a/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme new file mode 100644 index 0000000..c56555c --- /dev/null +++ b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..db41387 --- /dev/null +++ b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + AsyncUITableview.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 8DA65D73198E3F71005EE11F + + primary + + + 8DA65D85198E3F71005EE11F + + primary + + + + + diff --git a/AsyncUITableview/Info.plist b/AsyncUITableview/Info.plist index cc0cf01..40a3f08 100644 --- a/AsyncUITableview/Info.plist +++ b/AsyncUITableview/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.jigarm.InfiniteScroll + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/AsyncUITableviewTests/Info.plist b/AsyncUITableviewTests/Info.plist index cd161ce..ca8b878 100644 --- a/AsyncUITableviewTests/Info.plist +++ b/AsyncUITableviewTests/Info.plist @@ -7,9 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.jigarm.InfiniteScroll - LSApplicationCategoryType - + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -22,5 +20,7 @@ ???? CFBundleVersion 1 + LSApplicationCategoryType + From efb0ca5ca77a62244f75c7aeee6c2027a935e8b1 Mon Sep 17 00:00:00 2001 From: Yuri Mikhaylov Date: Wed, 21 Oct 2015 17:54:17 +0300 Subject: [PATCH 3/5] Xcode updated the storyboard --- AsyncUITableview/Base.lproj/Main.storyboard | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/AsyncUITableview/Base.lproj/Main.storyboard b/AsyncUITableview/Base.lproj/Main.storyboard index cc72477..1471e31 100644 --- a/AsyncUITableview/Base.lproj/Main.storyboard +++ b/AsyncUITableview/Base.lproj/Main.storyboard @@ -1,45 +1,55 @@ - + - + + - + + - + + + - + + + + + + @@ -72,6 +82,7 @@ + From 06d6e4998f6603036deea8d2a0e8f6cd5c56fc60 Mon Sep 17 00:00:00 2001 From: Yuri Mikhaylov Date: Wed, 21 Oct 2015 17:55:10 +0300 Subject: [PATCH 4/5] Fixed all warnings --- AsyncUITableview/MyTableViewController.swift | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/AsyncUITableview/MyTableViewController.swift b/AsyncUITableview/MyTableViewController.swift index a148f23..f7cd143 100644 --- a/AsyncUITableview/MyTableViewController.swift +++ b/AsyncUITableview/MyTableViewController.swift @@ -12,7 +12,7 @@ import Foundation class MyTableViewController: UITableViewController { let PageSize = 20 - var items:[MyItem] = [] + var items = [MyItem]() var isLoading = false @IBOutlet var MyFooterView : UIView! @@ -47,7 +47,7 @@ class MyTableViewController: UITableViewController { } //generate items - var arr:[MyItem] = [] + var arr = [MyItem]() for i in offset...(offset + size) { arr.append(MyItem(name: "Item " + String(i))) } @@ -77,7 +77,7 @@ class MyTableViewController: UITableViewController { //Instead of Reloading Table data, you can add 20 rows when table scroll is at end positoon for item in items { - self.items += item + self.items.append(item) } self.tableView.reloadData() self.isLoading = false @@ -90,8 +90,8 @@ class MyTableViewController: UITableViewController { Add Rows at indexpath */ for item in items { - var row = self.items.count - var indexPath = NSIndexPath(forRow:row,inSection:0) + let row = self.items.count + let indexPath = NSIndexPath(forRow:row,inSection:0) self.items.append(item) self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) } @@ -102,7 +102,7 @@ class MyTableViewController: UITableViewController { } } - override func scrollViewDidScroll(scrollView: UIScrollView!) { + override func scrollViewDidScroll(scrollView: UIScrollView) { let offset = scrollView.contentOffset.y let maxOffset = scrollView.contentSize.height - scrollView.frame.size.height if (maxOffset - offset) <= 40 { @@ -117,14 +117,14 @@ class MyTableViewController: UITableViewController { override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int { return items.count } - override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat { + override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 85; } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MyTableViewCell //Configure the cell... - var imagename = UTILITY.getRandomNumberBetween(1, To: 10).description + ".png" + let imagename = UTILITY.getRandomNumberBetween(1, To: 10).description + ".png" cell.img.image = UIImage(named:imagename) cell.lbl.text = items[indexPath.row].name return cell From b16a22843ba5dc28fdb63560d3f3f64d50bbd11b Mon Sep 17 00:00:00 2001 From: Yuri Mikhaylov Date: Wed, 21 Oct 2015 18:00:27 +0300 Subject: [PATCH 5/5] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80da43d..1ad211c 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Infinite Scroll Indicator : ============================ # Require -OSX 10.9.3 and Xcode 6.x (beta for now) +OSX 10.10+ and Xcode 7+ # Swift ===========