From 143dc3dd24ee16a18bbe8459437e57ba34a76550 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Elvis=20Nu=C3=B1ez?= <3lvis@users.noreply.github.com>
Date: Fri, 21 Oct 2016 00:49:33 +0200
Subject: [PATCH] Improve structure of demos (#89)
* Remove old and add new
* Add base ObjectiveC demo
* Add simple Swift demo
* Add options to Objective-C Demo
* Add Table Objective-C demo
* Wrap up migrating ObjC demos
* Rename containing folders
* Add Swift demos
* Add without index demo, remove custom cell
---
.../Base.lproj/LaunchScreen.storyboard | 27 -
CollectionObjC/Info.plist | 38 -
CollectionObjC/main.m | 8 -
CollectionSwift/AppDelegate.swift | 35 -
.../AppIcon.appiconset/Contents.json | 38 -
CollectionSwift/CollectionController.swift | 104 --
.../AppDelegate.swift | 28 -
.../AppIcon.appiconset/Contents.json | 38 -
.../ViewController.swift | 77 -
Demo.xcodeproj/project.pbxproj | 1562 +++++------------
.../xcschemes/CollectionObjC.xcscheme | 98 --
.../xcschemes/CollectionSwift.xcscheme | 98 --
.../DATASourceDelegateTableSwift.xcscheme | 98 --
.../InfiniteCollectionSwift.xcscheme | 98 --
.../xcschemes/InfiniteTableSwift.xcscheme | 98 --
...Swift.xcscheme => ObjectiveCDemo.xcscheme} | 24 +-
...{TableObjC.xcscheme => SwiftDemo.xcscheme} | 24 +-
InfiniteCollectionSwift/AppDelegate.swift | 35 -
.../Base.lproj/LaunchScreen.storyboard | 27 -
.../CollectionController.swift | 121 --
InfiniteCollectionSwift/Info.plist | 38 -
InfiniteTableSwift/AppDelegate.swift | 28 -
.../AppIcon.appiconset/Contents.json | 38 -
.../Base.lproj/LaunchScreen.storyboard | 27 -
InfiniteTableSwift/Info.plist | 38 -
InfiniteTableSwift/ViewController.swift | 98 --
Library/Helper.swift | 39 +
.../AppIcon.appiconset/Contents.json | 10 +
ObjectiveCDemo/Assets.xcassets/Contents.json | 6 +
.../Base.lproj/LaunchScreen.storyboard | 10 +-
.../CollectionViewController.h | 2 +-
.../CollectionViewController.m | 65 +
.../CollectionViewControllerWithFooter.h | 10 +
.../CollectionViewControllerWithFooter.m | 36 +-
.../FooterExampleView.h | 0
.../FooterExampleView.m | 0
.../CollectionViewControllerWithSections.h | 10 +
.../CollectionViewControllerWithSections.m | 66 +
.../Info.plist | 12 +-
ObjectiveCDemo/Options/OptionsController.h | 8 +
ObjectiveCDemo/Options/OptionsController.m | 104 ++
.../Root}/AppDelegate.h | 1 -
.../Root}/AppDelegate.m | 12 +-
.../TableViewController/TableViewController.h | 2 +-
.../TableViewController/TableViewController.m | 64 +
.../TableViewControllerWithSections.h | 10 +
.../TableViewControllerWithSections.m | 39 +-
{TableObjC => ObjectiveCDemo}/main.m | 2 +-
.../AppIcon.appiconset/Contents.json | 0
.../Base.lproj/LaunchScreen.storyboard | 10 +-
.../CollectionViewController.swift | 51 +
...CollectionViewControllerWithSections.swift | 52 +
.../Info.plist | 12 +-
SwiftDemo/Options/OptionsController.swift | 77 +
.../Root}/AppDelegate.swift | 4 +-
.../TableViewController.swift | 51 +
.../TableViewControllerWithSections.swift | 53 +
...ewControllerWithSectionsWithoutIndex.swift | 57 +
TableObjC/AppDelegate.h | 8 -
TableObjC/AppDelegate.m | 26 -
.../AppIcon.appiconset/Contents.json | 38 -
TableObjC/Base.lproj/LaunchScreen.storyboard | 27 -
TableObjC/Info.plist | 38 -
.../AppIcon.appiconset/Contents.json | 38 -
TableSwift/Base.lproj/LaunchScreen.storyboard | 27 -
TableSwift/CustomCell.swift | 28 -
TableSwift/Info.plist | 38 -
TableSwift/ViewController.swift | 97 -
68 files changed, 1256 insertions(+), 2927 deletions(-)
delete mode 100644 CollectionObjC/Base.lproj/LaunchScreen.storyboard
delete mode 100644 CollectionObjC/Info.plist
delete mode 100644 CollectionObjC/main.m
delete mode 100644 CollectionSwift/AppDelegate.swift
delete mode 100644 CollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
delete mode 100644 CollectionSwift/CollectionController.swift
delete mode 100644 DATASourceDelegateTableSwift/AppDelegate.swift
delete mode 100644 DATASourceDelegateTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
delete mode 100644 DATASourceDelegateTableSwift/ViewController.swift
delete mode 100644 Demo.xcodeproj/xcshareddata/xcschemes/CollectionObjC.xcscheme
delete mode 100644 Demo.xcodeproj/xcshareddata/xcschemes/CollectionSwift.xcscheme
delete mode 100644 Demo.xcodeproj/xcshareddata/xcschemes/DATASourceDelegateTableSwift.xcscheme
delete mode 100644 Demo.xcodeproj/xcshareddata/xcschemes/InfiniteCollectionSwift.xcscheme
delete mode 100644 Demo.xcodeproj/xcshareddata/xcschemes/InfiniteTableSwift.xcscheme
rename Demo.xcodeproj/xcshareddata/xcschemes/{TableSwift.xcscheme => ObjectiveCDemo.xcscheme} (82%)
rename Demo.xcodeproj/xcshareddata/xcschemes/{TableObjC.xcscheme => SwiftDemo.xcscheme} (83%)
delete mode 100644 InfiniteCollectionSwift/AppDelegate.swift
delete mode 100644 InfiniteCollectionSwift/Base.lproj/LaunchScreen.storyboard
delete mode 100644 InfiniteCollectionSwift/CollectionController.swift
delete mode 100644 InfiniteCollectionSwift/Info.plist
delete mode 100644 InfiniteTableSwift/AppDelegate.swift
delete mode 100644 InfiniteTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
delete mode 100644 InfiniteTableSwift/Base.lproj/LaunchScreen.storyboard
delete mode 100644 InfiniteTableSwift/Info.plist
delete mode 100644 InfiniteTableSwift/ViewController.swift
create mode 100644 Library/Helper.swift
rename {InfiniteCollectionSwift => ObjectiveCDemo}/Assets.xcassets/AppIcon.appiconset/Contents.json (77%)
create mode 100644 ObjectiveCDemo/Assets.xcassets/Contents.json
rename {CollectionSwift => ObjectiveCDemo}/Base.lproj/LaunchScreen.storyboard (70%)
rename CollectionObjC/ViewController.h => ObjectiveCDemo/CollectionViewController/CollectionViewController.h (68%)
create mode 100755 ObjectiveCDemo/CollectionViewController/CollectionViewController.m
create mode 100644 ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.h
rename CollectionObjC/ViewController.m => ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.m (71%)
mode change 100755 => 100644
rename {CollectionObjC => ObjectiveCDemo/CollectionViewControllerWithFooter}/FooterExampleView.h (100%)
rename {CollectionObjC => ObjectiveCDemo/CollectionViewControllerWithFooter}/FooterExampleView.m (100%)
create mode 100644 ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.h
create mode 100644 ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.m
rename {CollectionSwift => ObjectiveCDemo}/Info.plist (84%)
create mode 100644 ObjectiveCDemo/Options/OptionsController.h
create mode 100644 ObjectiveCDemo/Options/OptionsController.m
rename {CollectionObjC => ObjectiveCDemo/Root}/AppDelegate.h (99%)
mode change 100755 => 100644
rename {CollectionObjC => ObjectiveCDemo/Root}/AppDelegate.m (57%)
mode change 100755 => 100644
rename TableObjC/ViewController.h => ObjectiveCDemo/TableViewController/TableViewController.h (64%)
create mode 100755 ObjectiveCDemo/TableViewController/TableViewController.m
create mode 100644 ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.h
rename TableObjC/ViewController.m => ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.m (58%)
mode change 100755 => 100644
rename {TableObjC => ObjectiveCDemo}/main.m (88%)
rename {CollectionObjC => SwiftDemo}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%)
rename {DATASourceDelegateTableSwift => SwiftDemo}/Base.lproj/LaunchScreen.storyboard (70%)
create mode 100644 SwiftDemo/CollectionViewController/CollectionViewController.swift
create mode 100644 SwiftDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.swift
rename {DATASourceDelegateTableSwift => SwiftDemo}/Info.plist (84%)
create mode 100644 SwiftDemo/Options/OptionsController.swift
rename {TableSwift => SwiftDemo/Root}/AppDelegate.swift (87%)
mode change 100755 => 100644
create mode 100644 SwiftDemo/TableViewController/TableViewController.swift
create mode 100644 SwiftDemo/TableViewControllerWithSections/TableViewControllerWithSections.swift
create mode 100644 SwiftDemo/TableViewControllerWithSectionsWithoutIndex/TableViewControllerWithSectionsWithoutIndex.swift
delete mode 100755 TableObjC/AppDelegate.h
delete mode 100755 TableObjC/AppDelegate.m
delete mode 100644 TableObjC/Assets.xcassets/AppIcon.appiconset/Contents.json
delete mode 100644 TableObjC/Base.lproj/LaunchScreen.storyboard
delete mode 100644 TableObjC/Info.plist
delete mode 100644 TableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
delete mode 100644 TableSwift/Base.lproj/LaunchScreen.storyboard
delete mode 100644 TableSwift/CustomCell.swift
delete mode 100644 TableSwift/Info.plist
delete mode 100644 TableSwift/ViewController.swift
diff --git a/CollectionObjC/Base.lproj/LaunchScreen.storyboard b/CollectionObjC/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 2e721e1..0000000
--- a/CollectionObjC/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CollectionObjC/Info.plist b/CollectionObjC/Info.plist
deleted file mode 100644
index d39a4da..0000000
--- a/CollectionObjC/Info.plist
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/CollectionObjC/main.m b/CollectionObjC/main.m
deleted file mode 100644
index 81e84cb..0000000
--- a/CollectionObjC/main.m
+++ /dev/null
@@ -1,8 +0,0 @@
-#import
-#import "AppDelegate.h"
-
-int main(int argc, char * argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
-}
diff --git a/CollectionSwift/AppDelegate.swift b/CollectionSwift/AppDelegate.swift
deleted file mode 100644
index b37cf37..0000000
--- a/CollectionSwift/AppDelegate.swift
+++ /dev/null
@@ -1,35 +0,0 @@
-import UIKit
-import CoreData
-import DATAStack
-
-@UIApplicationMain
-class AppDelegate: UIResponder {
- var window: UIWindow?
-
- var dataStack: DATAStack = {
- let dataStack = DATAStack(modelName: "DataModel")
-
- return dataStack
- }()
-}
-
-extension AppDelegate: UIApplicationDelegate {
-
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
- self.window = UIWindow(frame: UIScreen.main.bounds)
- guard let window = self.window else { fatalError("Window not found") }
-
- let bounds = UIScreen.main.bounds
-
- let layout = UICollectionViewFlowLayout()
- layout.itemSize = CGSize(width: 120, height: 120)
- layout.sectionInset = UIEdgeInsets(top: 15, left: 0, bottom: 15, right: 0)
- layout.headerReferenceSize = CGSize(width: bounds.size.width, height: 60)
-
- let viewController = CollectionController(layout: layout, dataStack: self.dataStack)
- window.rootViewController = UINavigationController(rootViewController: viewController)
- window.makeKeyAndVisible()
-
- return true
- }
-}
diff --git a/CollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json b/CollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 118c98f..0000000
--- a/CollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/CollectionSwift/CollectionController.swift b/CollectionSwift/CollectionController.swift
deleted file mode 100644
index a38dad4..0000000
--- a/CollectionSwift/CollectionController.swift
+++ /dev/null
@@ -1,104 +0,0 @@
-import UIKit
-
-import DATAStack
-import CoreData
-
-class CollectionController: UICollectionViewController {
- unowned var dataStack: DATAStack
-
- lazy var dataSource: DATASource = {
- guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
-
- let request: NSFetchRequest = NSFetchRequest(entityName: "User")
- request.sortDescriptors = [
- NSSortDescriptor(key: "name", ascending: true),
- NSSortDescriptor(key: "firstLetterOfName", ascending: true),
- ]
-
- let dataSource = DATASource(collectionView: collectionView, cellIdentifier: CollectionCell.Identifier, fetchRequest: request, mainContext: self.dataStack.mainContext, sectionName: "firstLetterOfName", configuration: { cell, item, indexPath in
- let collectionCell = cell as! CollectionCell
- collectionCell.textLabel.text = item.value(forKey: "name") as? String
- })
-
- return dataSource
- }()
-
- init(layout: UICollectionViewLayout, dataStack: DATAStack) {
- self.dataStack = dataStack
-
- super.init(collectionViewLayout: layout)
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
-
- collectionView.register(CollectionCell.self, forCellWithReuseIdentifier: CollectionCell.Identifier)
- collectionView.dataSource = self.dataSource
- collectionView.backgroundColor = UIColor.white
- collectionView.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
-
- self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(CollectionController.saveAction))
- }
-
- func saveAction() {
- self.dataStack.performInNewBackgroundContext { backgroundContext in
- if let entity = NSEntityDescription.entity(forEntityName: "User", in: backgroundContext) {
- let user = NSManagedObject(entity: entity, insertInto: backgroundContext)
-
- let name = self.randomString()
- let firstLetter = String(name[name.startIndex])
- user.setValue(name, forKey: "name")
- user.setValue(firstLetter.uppercased(), forKey: "firstLetterOfName")
- do {
- try backgroundContext.save()
- } catch let savingError as NSError {
- print("Could not save \(savingError)")
- } catch {
- fatalError()
- }
- } else {
- print("Oh no")
- }
- }
- }
-
- func randomString() -> String {
- let letters = "ABCDEFGHIJKL"
- var string = ""
- for _ in 0 ... 5 {
- let token = UInt32(letters.characters.count)
- let letterIndex = Int(arc4random_uniform(token))
- let firstChar = Array(letters.characters)[letterIndex]
- string.append(firstChar)
- }
-
- return string
- }
-}
-
-extension CollectionController {
-
- override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
- guard let object = self.dataSource.objectAtIndexPath(indexPath) else { return }
-
- if let name = object.value(forKey: "name") as? String, name.characters.first == "A" {
- self.dataStack.performInNewBackgroundContext({ backgroundContext in
- let backgroundObject = backgroundContext.object(with: object.objectID)
- backgroundObject.setValue(name + "+", forKey: "name")
- try! backgroundContext.save()
- })
- } else {
- self.dataStack.performInNewBackgroundContext({ backgroundContext in
- let backgroundObject = backgroundContext.object(with: object.objectID)
- backgroundContext.delete(backgroundObject)
- try! backgroundContext.save()
- })
- }
- }
-}
diff --git a/DATASourceDelegateTableSwift/AppDelegate.swift b/DATASourceDelegateTableSwift/AppDelegate.swift
deleted file mode 100644
index c0cb585..0000000
--- a/DATASourceDelegateTableSwift/AppDelegate.swift
+++ /dev/null
@@ -1,28 +0,0 @@
-import UIKit
-import CoreData
-import DATAStack
-
-@UIApplicationMain
-class AppDelegate: UIResponder {
- var window: UIWindow?
-
- var dataStack: DATAStack = {
- let dataStack = DATAStack(modelName: "DataModel")
-
- return dataStack
- }()
-}
-
-extension AppDelegate: UIApplicationDelegate {
-
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
- self.window = UIWindow(frame: UIScreen.main.bounds)
- guard let window = self.window else { fatalError("Window not found") }
-
- let viewController = ViewController(dataStack: self.dataStack)
- window.rootViewController = UINavigationController(rootViewController: viewController)
- window.makeKeyAndVisible()
-
- return true
- }
-}
diff --git a/DATASourceDelegateTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json b/DATASourceDelegateTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 118c98f..0000000
--- a/DATASourceDelegateTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/DATASourceDelegateTableSwift/ViewController.swift b/DATASourceDelegateTableSwift/ViewController.swift
deleted file mode 100644
index a765ee6..0000000
--- a/DATASourceDelegateTableSwift/ViewController.swift
+++ /dev/null
@@ -1,77 +0,0 @@
-import UIKit
-import DATAStack
-import CoreData
-
-class ViewController: UITableViewController {
- static let CellIdentifier = "CellIdentifier"
- var dataStack: DATAStack?
-
- lazy var dataSource: DATASource = {
- let request: NSFetchRequest = NSFetchRequest(entityName: "User")
- request.sortDescriptors = [NSSortDescriptor(key: "createdDate", ascending: true)]
-
- let dataSource = DATASource(tableView: self.tableView, cellIdentifier: ViewController.CellIdentifier, fetchRequest: request, mainContext: self.dataStack!.mainContext, configuration: { cell, item, indexPath in
- let date = item.value(forKey: "createdDate") as? NSDate
- cell.textLabel?.text = date?.description
- })
-
- dataSource.delegate = self
-
- return dataSource
- }()
-
- convenience init(dataStack: DATAStack) {
- self.init(style: .plain)
-
- self.dataStack = dataStack
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: ViewController.CellIdentifier)
- self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(ViewController.saveAction))
- self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(ViewController.editAction))
- self.tableView.dataSource = self.dataSource
- self.tableView.delegate = self
- }
-
- func saveAction() {
- self.dataStack!.performInNewBackgroundContext { backgroundContext in
- let entity = NSEntityDescription.entity(forEntityName: "User", in: backgroundContext)!
- let user = NSManagedObject(entity: entity, insertInto: backgroundContext)
- user.setValue(NSDate(), forKey: "createdDate")
- try! backgroundContext.save()
- }
- }
-
- func editAction() {
- self.setEditing(!self.isEditing, animated: true)
- }
-}
-
-extension ViewController: DATASourceDelegate {
-
- func dataSource(_ dataSource: DATASource, tableView: UITableView, canEditRowAtIndexPath indexPath: IndexPath) -> Bool {
- return true
- }
-
- // This doesn't seem to be needed when implementing tableView(_:editActionsForRowAtIndexPath).
- func dataSource(_ dataSource: DATASource, tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: IndexPath) {
- }
-}
-
-// MARK: - UITableViewDelegate
-
-extension ViewController {
-
- override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
- let delete = UITableViewRowAction(style: .default, title: "Delete") { action, indexPath in
- let item = self.dataSource.objectAtIndexPath(indexPath)!
- self.dataStack!.mainContext.delete(item)
- try! self.dataStack!.mainContext.save()
- }
-
- return [delete]
- }
-}
diff --git a/Demo.xcodeproj/project.pbxproj b/Demo.xcodeproj/project.pbxproj
index 4a8ca6a..0fbe778 100644
--- a/Demo.xcodeproj/project.pbxproj
+++ b/Demo.xcodeproj/project.pbxproj
@@ -7,127 +7,17 @@
objects = {
/* Begin PBXBuildFile section */
- 141D2EE41BE021500028F879 /* CustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 141D2EE31BE021500028F879 /* CustomCell.swift */; };
14308AA21CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA31CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA41CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA51CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA61CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA71CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA81CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
- 14308AA91CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
14308AAA1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AAB1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AAC1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AAD1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AAE1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AAF1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AB01CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
- 14308AB11CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
14308AB21CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB31CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB41CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB51CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB61CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB71CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB81CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
- 14308AB91CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
14308ABA1CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308ABB1CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308ABC1CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308ABD1CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308ABE1CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308ABF1CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308AC01CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
- 14308AC11CC66665000C21DF /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
14308AC21CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC31CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC41CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC51CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC61CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC71CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC81CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
- 14308AC91CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
14308ACA1CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308ACB1CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308ACC1CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308ACD1CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308ACE1CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308ACF1CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308AD01CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 14308AD11CC66665000C21DF /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
- 146205831C3AB0E400D78FC5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 146205821C3AB0E400D78FC5 /* AppDelegate.swift */; };
- 146205851C3AB0E400D78FC5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 146205841C3AB0E400D78FC5 /* Assets.xcassets */; };
- 146205881C3AB0E400D78FC5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 146205861C3AB0E400D78FC5 /* LaunchScreen.storyboard */; };
- 1498B6091C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B60A1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B60B1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B60C1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B60D1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B60E1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B60F1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
- 1498B6101C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6111C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6121C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6131C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6141C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6151C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6161C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 1498B6171C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 1498B6181C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 1498B6191C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 1498B61A1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 1498B61B1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 1498B61C1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 1498B61D1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 149AF1931C0EB9EF00BA0907 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 149AF1921C0EB9EF00BA0907 /* AppDelegate.swift */; };
- 149AF1981C0EB9EF00BA0907 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 149AF1971C0EB9EF00BA0907 /* Assets.xcassets */; };
- 149AF19B1C0EB9EF00BA0907 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 149AF1991C0EB9EF00BA0907 /* LaunchScreen.storyboard */; };
- 149AF1A11C0EBA0700BA0907 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 149AF1A01C0EBA0700BA0907 /* ViewController.swift */; };
+ 14663CA61DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14663CA51DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex.swift */; };
149EE87A1CC916DB002739BA /* DATAStack.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 149EE8791CC916DB002739BA /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
14A139B41AEFC72B00AD732F /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A139B31AEFC72B00AD732F /* Tests.swift */; };
- 14AFFAF01C3C00E0001AD02C /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
14AFFAF11C3C00E3001AD02C /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
- 14AFFAF21C3C00E5001AD02C /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
- 14C022551CC9031700CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022541CC9031700CEFC40 /* DATAStack.framework */; };
- 14C022561CC9031700CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022541CC9031700CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 14C022591CC9031F00CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022581CC9031F00CEFC40 /* DATAStack.framework */; };
- 14C0225A1CC9031F00CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022581CC9031F00CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 14C0225D1CC9033B00CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C0225C1CC9033B00CEFC40 /* DATAStack.framework */; };
- 14C0225E1CC9033B00CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C0225C1CC9033B00CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 14C022611CC9034500CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022601CC9034500CEFC40 /* DATAStack.framework */; };
- 14C022621CC9034500CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022601CC9034500CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 14C022651CC9034E00CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022641CC9034E00CEFC40 /* DATAStack.framework */; };
- 14C022661CC9034E00CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022641CC9034E00CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 14C022691CC9035800CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022681CC9035800CEFC40 /* DATAStack.framework */; };
- 14C0226A1CC9035800CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C022681CC9035800CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 14C0226D1CC9036100CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C0226C1CC9036100CEFC40 /* DATAStack.framework */; };
- 14C0226E1CC9036100CEFC40 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 14C0226C1CC9036100CEFC40 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
14C022701CC9038700CEFC40 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C0226C1CC9036100CEFC40 /* DATAStack.framework */; };
- 14F3A67D1BE01B8500789E22 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A67C1BE01B8500789E22 /* AppDelegate.swift */; };
- 14F3A6821BE01B8500789E22 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6811BE01B8500789E22 /* Assets.xcassets */; };
- 14F3A6851BE01B8500789E22 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6831BE01B8500789E22 /* LaunchScreen.storyboard */; };
- 14F3A6921BE01B9200789E22 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6911BE01B9200789E22 /* main.m */; };
- 14F3A6951BE01B9200789E22 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6941BE01B9200789E22 /* AppDelegate.m */; };
- 14F3A69A1BE01B9200789E22 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6991BE01B9200789E22 /* Assets.xcassets */; };
- 14F3A69D1BE01B9200789E22 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A69B1BE01B9200789E22 /* LaunchScreen.storyboard */; };
- 14F3A6A91BE01B9C00789E22 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6A81BE01B9C00789E22 /* AppDelegate.swift */; };
- 14F3A6AE1BE01B9C00789E22 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6AD1BE01B9C00789E22 /* Assets.xcassets */; };
- 14F3A6B11BE01B9C00789E22 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6AF1BE01B9C00789E22 /* LaunchScreen.storyboard */; };
- 14F3A6BE1BE01BA900789E22 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6BD1BE01BA900789E22 /* main.m */; };
- 14F3A6C11BE01BA900789E22 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6C01BE01BA900789E22 /* AppDelegate.m */; };
- 14F3A6C61BE01BA900789E22 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6C51BE01BA900789E22 /* Assets.xcassets */; };
- 14F3A6C91BE01BA900789E22 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14F3A6C71BE01BA900789E22 /* LaunchScreen.storyboard */; };
- 14F3A6DE1BE01D6E00789E22 /* FooterExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6D81BE01D6E00789E22 /* FooterExampleView.m */; };
- 14F3A6E01BE01D6E00789E22 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6DC1BE01D6E00789E22 /* ViewController.m */; };
- 14F3A6E41BE01D9200789E22 /* CollectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6E21BE01D9200789E22 /* CollectionController.swift */; };
- 14F3A6E71BE01DD000789E22 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6E61BE01DD000789E22 /* ViewController.m */; };
- 14F3A6E91BE01DE800789E22 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F3A6E81BE01DE800789E22 /* ViewController.swift */; };
- 14F535951C3A7E9C00671EDF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F535941C3A7E9C00671EDF /* AppDelegate.swift */; };
- 14F535971C3A7E9C00671EDF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14F535961C3A7E9C00671EDF /* Assets.xcassets */; };
- 14F5359A1C3A7E9C00671EDF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14F535981C3A7E9C00671EDF /* LaunchScreen.storyboard */; };
- 14F535A01C3A7EC000671EDF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F5359F1C3A7EC000671EDF /* ViewController.swift */; };
- 14F7B07C1C3AB23000AE779F /* CollectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F7B07B1C3AB23000AE779F /* CollectionController.swift */; };
14F848711CC6686B0052E4B0 /* DATASource.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F848701CC667D20052E4B0 /* DATASource.h */; settings = {ATTRIBUTES = (Public, ); }; };
14F848721CC668700052E4B0 /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
14F848731CC668700052E4B0 /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
@@ -142,6 +32,50 @@
14F848891CC668B60052E4B0 /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
14F8488A1CC668B60052E4B0 /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
14F8488B1CC668B60052E4B0 /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
+ 4471D4E31DB7822C00DE1EBE /* CollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4471D4D41DB7822C00DE1EBE /* CollectionViewController.m */; };
+ 4471D4E41DB7822C00DE1EBE /* CollectionViewControllerWithFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4471D4D71DB7822C00DE1EBE /* CollectionViewControllerWithFooter.m */; };
+ 4471D4E51DB7822C00DE1EBE /* FooterExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4471D4D91DB7822C00DE1EBE /* FooterExampleView.m */; };
+ 4471D4E61DB7822C00DE1EBE /* CollectionViewControllerWithSections.m in Sources */ = {isa = PBXBuildFile; fileRef = 4471D4DC1DB7822C00DE1EBE /* CollectionViewControllerWithSections.m */; };
+ 4471D4E71DB7822C00DE1EBE /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4471D4DF1DB7822C00DE1EBE /* TableViewController.m */; };
+ 4471D4E81DB7822C00DE1EBE /* TableViewControllerWithSections.m in Sources */ = {isa = PBXBuildFile; fileRef = 4471D4E21DB7822C00DE1EBE /* TableViewControllerWithSections.m */; };
+ 4479C24B1DB77BB000803558 /* OptionsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4479C23F1DB77BB000803558 /* OptionsController.m */; };
+ 4479C24C1DB77BB000803558 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4479C2421DB77BB000803558 /* AppDelegate.m */; };
+ 447D2EE61DB784F9006CBF1C /* CollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447D2EDD1DB784F9006CBF1C /* CollectionViewController.swift */; };
+ 447D2EE71DB784F9006CBF1C /* OptionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447D2EE11DB784F9006CBF1C /* OptionsController.swift */; };
+ 447D2EE81DB784F9006CBF1C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447D2EE31DB784F9006CBF1C /* AppDelegate.swift */; };
+ 447D2EEC1DB78559006CBF1C /* CollectionViewControllerWithSections.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447D2EEB1DB78559006CBF1C /* CollectionViewControllerWithSections.swift */; };
+ 447D2EEE1DB7855E006CBF1C /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447D2EED1DB7855E006CBF1C /* TableViewController.swift */; };
+ 447D2EF01DB78564006CBF1C /* TableViewControllerWithSections.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447D2EEF1DB78564006CBF1C /* TableViewControllerWithSections.swift */; };
+ 44A8DB5E1DB77E62009EF5A7 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A8DB5D1DB77E62009EF5A7 /* Helper.swift */; };
+ 44A8DB5F1DB77E62009EF5A7 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A8DB5D1DB77E62009EF5A7 /* Helper.swift */; };
+ 44A8DB601DB77F46009EF5A7 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A8DB5D1DB77E62009EF5A7 /* Helper.swift */; };
+ 44B91CF01DB7728D009DB4B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 44B91CEF1DB7728D009DB4B7 /* Assets.xcassets */; };
+ 44B91CF31DB7728D009DB4B7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 44B91CF11DB7728D009DB4B7 /* LaunchScreen.storyboard */; };
+ 44B91D001DB7729D009DB4B7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B91CFF1DB7729D009DB4B7 /* main.m */; };
+ 44B91D0E1DB7729D009DB4B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 44B91D0D1DB7729D009DB4B7 /* Assets.xcassets */; };
+ 44B91D111DB7729D009DB4B7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 44B91D0F1DB7729D009DB4B7 /* LaunchScreen.storyboard */; };
+ 44B91D171DB77375009DB4B7 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44B91D161DB77375009DB4B7 /* DATAStack.framework */; };
+ 44B91D181DB77375009DB4B7 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 44B91D161DB77375009DB4B7 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 44B91D1B1DB77381009DB4B7 /* DATAStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44B91D1A1DB77381009DB4B7 /* DATAStack.framework */; };
+ 44B91D1C1DB77381009DB4B7 /* DATAStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 44B91D1A1DB77381009DB4B7 /* DATAStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 44B91D241DB774B0009DB4B7 /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
+ 44B91D251DB774B0009DB4B7 /* DATASource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9F1CC66665000C21DF /* DATASource.swift */; };
+ 44B91D261DB774B2009DB4B7 /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
+ 44B91D271DB774B4009DB4B7 /* DATASourceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA11CC66665000C21DF /* DATASourceDelegate.swift */; };
+ 44B91D281DB774B6009DB4B7 /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
+ 44B91D291DB774B6009DB4B7 /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */; };
+ 44B91D2A1DB774B9009DB4B7 /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
+ 44B91D2B1DB774BA009DB4B7 /* DATASource+UICollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */; };
+ 44B91D2C1DB774BD009DB4B7 /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
+ 44B91D2D1DB774BD009DB4B7 /* DATASource+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */; };
+ 44B91D2E1DB774BF009DB4B7 /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
+ 44B91D2F1DB774C0009DB4B7 /* DATASourceCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */; };
+ 44B91D301DB77511009DB4B7 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
+ 44B91D311DB77511009DB4B7 /* CollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */; };
+ 44B91D321DB77514009DB4B7 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
+ 44B91D331DB77515009DB4B7 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */; };
+ 44B91D341DB77517009DB4B7 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
+ 44B91D351DB77518009DB4B7 /* InfiniteLoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -155,79 +89,24 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- 14C022571CC9031700CEFC40 /* Embed Frameworks */ = {
+ 44B91D191DB77375009DB4B7 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 14C022561CC9031700CEFC40 /* DATAStack.framework in Embed Frameworks */,
+ 44B91D181DB77375009DB4B7 /* DATAStack.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
- 14C0225B1CC9031F00CEFC40 /* Embed Frameworks */ = {
+ 44B91D1D1DB77381009DB4B7 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 14C0225A1CC9031F00CEFC40 /* DATAStack.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14C0225F1CC9033C00CEFC40 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 14C0225E1CC9033B00CEFC40 /* DATAStack.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14C022631CC9034500CEFC40 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 14C022621CC9034500CEFC40 /* DATAStack.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14C022671CC9034E00CEFC40 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 14C022661CC9034E00CEFC40 /* DATAStack.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14C0226B1CC9035800CEFC40 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 14C0226A1CC9035800CEFC40 /* DATAStack.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14C0226F1CC9036200CEFC40 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 14C0226E1CC9036100CEFC40 /* DATAStack.framework in Embed Frameworks */,
+ 44B91D1C1DB77381009DB4B7 /* DATAStack.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -235,29 +114,18 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 141D2EE31BE021500028F879 /* CustomCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomCell.swift; sourceTree = ""; };
14308A9C1CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DATASource+NSFetchedResultsControllerDelegate.swift"; sourceTree = ""; };
14308A9D1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DATASource+UICollectionViewDataSource.swift"; sourceTree = ""; };
14308A9E1CC66665000C21DF /* DATASource+UITableViewDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DATASource+UITableViewDataSource.swift"; sourceTree = ""; };
14308A9F1CC66665000C21DF /* DATASource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DATASource.swift; sourceTree = ""; };
14308AA01CC66665000C21DF /* DATASourceCollectionHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DATASourceCollectionHeaderView.swift; sourceTree = ""; };
14308AA11CC66665000C21DF /* DATASourceDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DATASourceDelegate.swift; sourceTree = ""; };
- 146205801C3AB0E400D78FC5 /* InfiniteCollectionSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InfiniteCollectionSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 146205821C3AB0E400D78FC5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 146205841C3AB0E400D78FC5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 146205871C3AB0E400D78FC5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 146205891C3AB0E400D78FC5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 14663CA51DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewControllerWithSectionsWithoutIndex.swift; sourceTree = ""; };
146D72AC1AB782920058798C /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
146D72B11AB782920058798C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionCell.swift; sourceTree = ""; };
1498B6071C3BC9E80066FAC8 /* DataModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DataModel.xcdatamodel; sourceTree = ""; };
1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfiniteLoadingIndicator.swift; sourceTree = ""; };
- 149AF1901C0EB9EF00BA0907 /* DATASourceDelegateTableSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DATASourceDelegateTableSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 149AF1921C0EB9EF00BA0907 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 149AF1971C0EB9EF00BA0907 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 149AF19A1C0EB9EF00BA0907 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 149AF19C1C0EB9EF00BA0907 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 149AF1A01C0EBA0700BA0907 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
149EE8791CC916DB002739BA /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
14A139B31AEFC72B00AD732F /* Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; };
14C022541CC9031700CEFC40 /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
@@ -267,65 +135,51 @@
14C022641CC9034E00CEFC40 /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
14C022681CC9035800CEFC40 /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
14C0226C1CC9036100CEFC40 /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
- 14C0AF7F1BD6D4230009ECBE /* .slather.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .slather.yml; sourceTree = ""; };
14C0AF801BD6D4230009ECBE /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = ""; };
14C0AF811BD6D4230009ECBE /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; };
14C0AF821BD6D4230009ECBE /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; };
14C0AF831BD6D4230009ECBE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
- 14F3A67A1BE01B8400789E22 /* CollectionSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 14F3A67C1BE01B8500789E22 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 14F3A6811BE01B8500789E22 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 14F3A6841BE01B8500789E22 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 14F3A6861BE01B8500789E22 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 14F3A68E1BE01B9200789E22 /* CollectionObjC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionObjC.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 14F3A6911BE01B9200789E22 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
- 14F3A6931BE01B9200789E22 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
- 14F3A6941BE01B9200789E22 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
- 14F3A6991BE01B9200789E22 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 14F3A69C1BE01B9200789E22 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 14F3A69E1BE01B9200789E22 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 14F3A6A61BE01B9C00789E22 /* TableSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TableSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 14F3A6A81BE01B9C00789E22 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 14F3A6AD1BE01B9C00789E22 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 14F3A6B01BE01B9C00789E22 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 14F3A6B21BE01B9C00789E22 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 14F3A6BA1BE01BA900789E22 /* TableObjC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TableObjC.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 14F3A6BD1BE01BA900789E22 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
- 14F3A6BF1BE01BA900789E22 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
- 14F3A6C01BE01BA900789E22 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
- 14F3A6C51BE01BA900789E22 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 14F3A6C81BE01BA900789E22 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 14F3A6CA1BE01BA900789E22 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 14F3A6D71BE01D6E00789E22 /* FooterExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FooterExampleView.h; sourceTree = ""; };
- 14F3A6D81BE01D6E00789E22 /* FooterExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FooterExampleView.m; sourceTree = ""; };
- 14F3A6DB1BE01D6E00789E22 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
- 14F3A6DC1BE01D6E00789E22 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
- 14F3A6E21BE01D9200789E22 /* CollectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionController.swift; sourceTree = ""; };
- 14F3A6E51BE01DD000789E22 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
- 14F3A6E61BE01DD000789E22 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
- 14F3A6E81BE01DE800789E22 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 14F535921C3A7E9C00671EDF /* InfiniteTableSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InfiniteTableSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 14F535941C3A7E9C00671EDF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 14F535961C3A7E9C00671EDF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 14F535991C3A7E9C00671EDF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 14F5359B1C3A7E9C00671EDF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 14F5359F1C3A7EC000671EDF /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 14F7B07B1C3AB23000AE779F /* CollectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionController.swift; sourceTree = ""; };
14F848671CC667990052E4B0 /* DATASource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DATASource.framework; sourceTree = BUILT_PRODUCTS_DIR; };
14F8486F1CC667BB0052E4B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
14F848701CC667D20052E4B0 /* DATASource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DATASource.h; sourceTree = ""; };
14F8487D1CC668820052E4B0 /* DATASource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DATASource.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4471D4D31DB7822C00DE1EBE /* CollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionViewController.h; sourceTree = ""; };
+ 4471D4D41DB7822C00DE1EBE /* CollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewController.m; sourceTree = ""; };
+ 4471D4D61DB7822C00DE1EBE /* CollectionViewControllerWithFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionViewControllerWithFooter.h; sourceTree = ""; };
+ 4471D4D71DB7822C00DE1EBE /* CollectionViewControllerWithFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewControllerWithFooter.m; sourceTree = ""; };
+ 4471D4D81DB7822C00DE1EBE /* FooterExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FooterExampleView.h; sourceTree = ""; };
+ 4471D4D91DB7822C00DE1EBE /* FooterExampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FooterExampleView.m; sourceTree = ""; };
+ 4471D4DB1DB7822C00DE1EBE /* CollectionViewControllerWithSections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionViewControllerWithSections.h; sourceTree = ""; };
+ 4471D4DC1DB7822C00DE1EBE /* CollectionViewControllerWithSections.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewControllerWithSections.m; sourceTree = ""; };
+ 4471D4DE1DB7822C00DE1EBE /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewController.h; sourceTree = ""; };
+ 4471D4DF1DB7822C00DE1EBE /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewController.m; sourceTree = ""; };
+ 4471D4E11DB7822C00DE1EBE /* TableViewControllerWithSections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewControllerWithSections.h; sourceTree = ""; };
+ 4471D4E21DB7822C00DE1EBE /* TableViewControllerWithSections.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewControllerWithSections.m; sourceTree = ""; };
+ 4479C23E1DB77BB000803558 /* OptionsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsController.h; sourceTree = ""; };
+ 4479C23F1DB77BB000803558 /* OptionsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OptionsController.m; sourceTree = ""; };
+ 4479C2411DB77BB000803558 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
+ 4479C2421DB77BB000803558 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
+ 447D2EDD1DB784F9006CBF1C /* CollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewController.swift; sourceTree = ""; };
+ 447D2EE11DB784F9006CBF1C /* OptionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OptionsController.swift; sourceTree = ""; };
+ 447D2EE31DB784F9006CBF1C /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 447D2EEB1DB78559006CBF1C /* CollectionViewControllerWithSections.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewControllerWithSections.swift; sourceTree = ""; };
+ 447D2EED1DB7855E006CBF1C /* TableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = ""; };
+ 447D2EEF1DB78564006CBF1C /* TableViewControllerWithSections.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewControllerWithSections.swift; sourceTree = ""; };
+ 44A8DB5D1DB77E62009EF5A7 /* Helper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Helper.swift; sourceTree = ""; };
+ 44B91CE41DB7728D009DB4B7 /* SwiftDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 44B91CEF1DB7728D009DB4B7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 44B91CF21DB7728D009DB4B7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 44B91CF41DB7728D009DB4B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 44B91CFC1DB7729D009DB4B7 /* ObjectiveCDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ObjectiveCDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 44B91CFF1DB7729D009DB4B7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ 44B91D0D1DB7729D009DB4B7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 44B91D101DB7729D009DB4B7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 44B91D121DB7729D009DB4B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 44B91D161DB77375009DB4B7 /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
+ 44B91D1A1DB77381009DB4B7 /* DATAStack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DATAStack.framework; path = Carthage/Build/iOS/DATAStack.framework; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
- 1462057D1C3AB0E400D78FC5 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14C0226D1CC9036100CEFC40 /* DATAStack.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
146D72A91AB782920058798C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -334,65 +188,33 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- 149AF18D1C0EB9EF00BA0907 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14C022651CC9034E00CEFC40 /* DATAStack.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6771BE01B8400789E22 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14C022551CC9031700CEFC40 /* DATAStack.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A68B1BE01B9200789E22 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14C022591CC9031F00CEFC40 /* DATAStack.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6A31BE01B9C00789E22 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14C0225D1CC9033B00CEFC40 /* DATAStack.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6B71BE01BA900789E22 /* Frameworks */ = {
+ 14F848631CC667990052E4B0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 14C022611CC9034500CEFC40 /* DATAStack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 14F5358F1C3A7E9C00671EDF /* Frameworks */ = {
+ 14F848791CC668820052E4B0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 14C022691CC9035800CEFC40 /* DATAStack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 14F848631CC667990052E4B0 /* Frameworks */ = {
+ 44B91CE11DB7728D009DB4B7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 44B91D171DB77375009DB4B7 /* DATAStack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 14F848791CC668820052E4B0 /* Frameworks */ = {
+ 44B91CF91DB7729D009DB4B7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 44B91D1B1DB77381009DB4B7 /* DATAStack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -413,16 +235,12 @@
path = Source;
sourceTree = "";
};
- 146205811C3AB0E400D78FC5 /* InfiniteCollectionSwift */ = {
+ 14663CA41DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex */ = {
isa = PBXGroup;
children = (
- 146205821C3AB0E400D78FC5 /* AppDelegate.swift */,
- 14F7B07B1C3AB23000AE779F /* CollectionController.swift */,
- 146205841C3AB0E400D78FC5 /* Assets.xcassets */,
- 146205861C3AB0E400D78FC5 /* LaunchScreen.storyboard */,
- 146205891C3AB0E400D78FC5 /* Info.plist */,
+ 14663CA51DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex.swift */,
);
- path = InfiniteCollectionSwift;
+ path = TableViewControllerWithSectionsWithoutIndex;
sourceTree = "";
};
146D728A1AB782920058798C = {
@@ -432,13 +250,8 @@
14C136501AB7849300B7B07A /* Metadata */,
146D72AF1AB782920058798C /* Tests */,
1498B6041C3BC9E80066FAC8 /* Library */,
- 14F3A67B1BE01B8500789E22 /* CollectionSwift */,
- 14F3A68F1BE01B9200789E22 /* CollectionObjC */,
- 14F3A6A71BE01B9C00789E22 /* TableSwift */,
- 14F3A6BB1BE01BA900789E22 /* TableObjC */,
- 149AF1911C0EB9EF00BA0907 /* DATASourceDelegateTableSwift */,
- 14F535931C3A7E9C00671EDF /* InfiniteTableSwift */,
- 146205811C3AB0E400D78FC5 /* InfiniteCollectionSwift */,
+ 44B91CE51DB7728D009DB4B7 /* SwiftDemo */,
+ 44B91CFD1DB7729D009DB4B7 /* ObjectiveCDemo */,
146D72941AB782920058798C /* Products */,
AD64C6A3429E8A3FBFC3CF2D /* Frameworks */,
);
@@ -450,15 +263,10 @@
isa = PBXGroup;
children = (
146D72AC1AB782920058798C /* Tests.xctest */,
- 14F3A67A1BE01B8400789E22 /* CollectionSwift.app */,
- 14F3A68E1BE01B9200789E22 /* CollectionObjC.app */,
- 14F3A6A61BE01B9C00789E22 /* TableSwift.app */,
- 14F3A6BA1BE01BA900789E22 /* TableObjC.app */,
- 149AF1901C0EB9EF00BA0907 /* DATASourceDelegateTableSwift.app */,
- 14F535921C3A7E9C00671EDF /* InfiniteTableSwift.app */,
- 146205801C3AB0E400D78FC5 /* InfiniteCollectionSwift.app */,
14F848671CC667990052E4B0 /* DATASource.framework */,
14F8487D1CC668820052E4B0 /* DATASource.framework */,
+ 44B91CE41DB7728D009DB4B7 /* SwiftDemo.app */,
+ 44B91CFC1DB7729D009DB4B7 /* ObjectiveCDemo.app */,
);
name = Products;
sourceTree = "";
@@ -483,29 +291,17 @@
1498B6041C3BC9E80066FAC8 /* Library */ = {
isa = PBXGroup;
children = (
- 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */,
1498B6061C3BC9E80066FAC8 /* DataModel.xcdatamodeld */,
+ 1498B6051C3BC9E80066FAC8 /* CollectionCell.swift */,
1498B6081C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift */,
+ 44A8DB5D1DB77E62009EF5A7 /* Helper.swift */,
);
path = Library;
sourceTree = "";
};
- 149AF1911C0EB9EF00BA0907 /* DATASourceDelegateTableSwift */ = {
- isa = PBXGroup;
- children = (
- 149AF1921C0EB9EF00BA0907 /* AppDelegate.swift */,
- 149AF1A01C0EBA0700BA0907 /* ViewController.swift */,
- 149AF1971C0EB9EF00BA0907 /* Assets.xcassets */,
- 149AF1991C0EB9EF00BA0907 /* LaunchScreen.storyboard */,
- 149AF19C1C0EB9EF00BA0907 /* Info.plist */,
- );
- path = DATASourceDelegateTableSwift;
- sourceTree = "";
- };
14C136501AB7849300B7B07A /* Metadata */ = {
isa = PBXGroup;
children = (
- 14C0AF7F1BD6D4230009ECBE /* .slather.yml */,
14C0AF801BD6D4230009ECBE /* .travis.yml */,
14C0AF811BD6D4230009ECBE /* CHANGELOG.md */,
14C0AF821BD6D4230009ECBE /* CONTRIBUTING.md */,
@@ -515,94 +311,167 @@
name = Metadata;
sourceTree = "";
};
- 14F3A67B1BE01B8500789E22 /* CollectionSwift */ = {
+ 4471D4D21DB7822C00DE1EBE /* CollectionViewController */ = {
isa = PBXGroup;
children = (
- 14F3A67C1BE01B8500789E22 /* AppDelegate.swift */,
- 14F3A6E21BE01D9200789E22 /* CollectionController.swift */,
- 14F3A6811BE01B8500789E22 /* Assets.xcassets */,
- 14F3A6831BE01B8500789E22 /* LaunchScreen.storyboard */,
- 14F3A6861BE01B8500789E22 /* Info.plist */,
+ 4471D4D31DB7822C00DE1EBE /* CollectionViewController.h */,
+ 4471D4D41DB7822C00DE1EBE /* CollectionViewController.m */,
);
- path = CollectionSwift;
+ path = CollectionViewController;
sourceTree = "";
};
- 14F3A68F1BE01B9200789E22 /* CollectionObjC */ = {
+ 4471D4D51DB7822C00DE1EBE /* CollectionViewControllerWithFooter */ = {
isa = PBXGroup;
children = (
- 14F3A6931BE01B9200789E22 /* AppDelegate.h */,
- 14F3A6941BE01B9200789E22 /* AppDelegate.m */,
- 14F3A6D71BE01D6E00789E22 /* FooterExampleView.h */,
- 14F3A6D81BE01D6E00789E22 /* FooterExampleView.m */,
- 14F3A6DB1BE01D6E00789E22 /* ViewController.h */,
- 14F3A6DC1BE01D6E00789E22 /* ViewController.m */,
- 14F3A6991BE01B9200789E22 /* Assets.xcassets */,
- 14F3A69B1BE01B9200789E22 /* LaunchScreen.storyboard */,
- 14F3A69E1BE01B9200789E22 /* Info.plist */,
- 14F3A6901BE01B9200789E22 /* Supporting Files */,
- );
- path = CollectionObjC;
+ 4471D4D61DB7822C00DE1EBE /* CollectionViewControllerWithFooter.h */,
+ 4471D4D71DB7822C00DE1EBE /* CollectionViewControllerWithFooter.m */,
+ 4471D4D81DB7822C00DE1EBE /* FooterExampleView.h */,
+ 4471D4D91DB7822C00DE1EBE /* FooterExampleView.m */,
+ );
+ path = CollectionViewControllerWithFooter;
sourceTree = "";
};
- 14F3A6901BE01B9200789E22 /* Supporting Files */ = {
+ 4471D4DA1DB7822C00DE1EBE /* CollectionViewControllerWithSections */ = {
isa = PBXGroup;
children = (
- 14F3A6911BE01B9200789E22 /* main.m */,
+ 4471D4DB1DB7822C00DE1EBE /* CollectionViewControllerWithSections.h */,
+ 4471D4DC1DB7822C00DE1EBE /* CollectionViewControllerWithSections.m */,
);
- name = "Supporting Files";
+ path = CollectionViewControllerWithSections;
sourceTree = "";
};
- 14F3A6A71BE01B9C00789E22 /* TableSwift */ = {
+ 4471D4DD1DB7822C00DE1EBE /* TableViewController */ = {
isa = PBXGroup;
children = (
- 14F3A6A81BE01B9C00789E22 /* AppDelegate.swift */,
- 14F3A6E81BE01DE800789E22 /* ViewController.swift */,
- 141D2EE31BE021500028F879 /* CustomCell.swift */,
- 14F3A6AD1BE01B9C00789E22 /* Assets.xcassets */,
- 14F3A6AF1BE01B9C00789E22 /* LaunchScreen.storyboard */,
- 14F3A6B21BE01B9C00789E22 /* Info.plist */,
- );
- path = TableSwift;
+ 4471D4DE1DB7822C00DE1EBE /* TableViewController.h */,
+ 4471D4DF1DB7822C00DE1EBE /* TableViewController.m */,
+ );
+ path = TableViewController;
sourceTree = "";
};
- 14F3A6BB1BE01BA900789E22 /* TableObjC */ = {
+ 4471D4E01DB7822C00DE1EBE /* TableViewControllerWithSections */ = {
isa = PBXGroup;
children = (
- 14F3A6BF1BE01BA900789E22 /* AppDelegate.h */,
- 14F3A6C01BE01BA900789E22 /* AppDelegate.m */,
- 14F3A6E51BE01DD000789E22 /* ViewController.h */,
- 14F3A6E61BE01DD000789E22 /* ViewController.m */,
- 14F3A6C51BE01BA900789E22 /* Assets.xcassets */,
- 14F3A6C71BE01BA900789E22 /* LaunchScreen.storyboard */,
- 14F3A6CA1BE01BA900789E22 /* Info.plist */,
- 14F3A6BC1BE01BA900789E22 /* Supporting Files */,
- );
- path = TableObjC;
+ 4471D4E11DB7822C00DE1EBE /* TableViewControllerWithSections.h */,
+ 4471D4E21DB7822C00DE1EBE /* TableViewControllerWithSections.m */,
+ );
+ path = TableViewControllerWithSections;
sourceTree = "";
};
- 14F3A6BC1BE01BA900789E22 /* Supporting Files */ = {
+ 4479C23D1DB77BB000803558 /* Options */ = {
isa = PBXGroup;
children = (
- 14F3A6BD1BE01BA900789E22 /* main.m */,
+ 4479C23E1DB77BB000803558 /* OptionsController.h */,
+ 4479C23F1DB77BB000803558 /* OptionsController.m */,
);
- name = "Supporting Files";
+ path = Options;
+ sourceTree = "";
+ };
+ 4479C2401DB77BB000803558 /* Root */ = {
+ isa = PBXGroup;
+ children = (
+ 4479C2411DB77BB000803558 /* AppDelegate.h */,
+ 4479C2421DB77BB000803558 /* AppDelegate.m */,
+ );
+ path = Root;
+ sourceTree = "";
+ };
+ 447D2EDC1DB784F9006CBF1C /* CollectionViewController */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EDD1DB784F9006CBF1C /* CollectionViewController.swift */,
+ );
+ path = CollectionViewController;
+ sourceTree = "";
+ };
+ 447D2EDF1DB784F9006CBF1C /* CollectionViewControllerWithSections */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EEB1DB78559006CBF1C /* CollectionViewControllerWithSections.swift */,
+ );
+ path = CollectionViewControllerWithSections;
+ sourceTree = "";
+ };
+ 447D2EE01DB784F9006CBF1C /* Options */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EE11DB784F9006CBF1C /* OptionsController.swift */,
+ );
+ path = Options;
+ sourceTree = "";
+ };
+ 447D2EE21DB784F9006CBF1C /* Root */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EE31DB784F9006CBF1C /* AppDelegate.swift */,
+ );
+ path = Root;
+ sourceTree = "";
+ };
+ 447D2EE41DB784F9006CBF1C /* TableViewController */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EED1DB7855E006CBF1C /* TableViewController.swift */,
+ );
+ path = TableViewController;
+ sourceTree = "";
+ };
+ 447D2EE51DB784F9006CBF1C /* TableViewControllerWithSections */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EEF1DB78564006CBF1C /* TableViewControllerWithSections.swift */,
+ );
+ path = TableViewControllerWithSections;
+ sourceTree = "";
+ };
+ 44B91CE51DB7728D009DB4B7 /* SwiftDemo */ = {
+ isa = PBXGroup;
+ children = (
+ 447D2EE21DB784F9006CBF1C /* Root */,
+ 447D2EE01DB784F9006CBF1C /* Options */,
+ 447D2EDC1DB784F9006CBF1C /* CollectionViewController */,
+ 447D2EDF1DB784F9006CBF1C /* CollectionViewControllerWithSections */,
+ 447D2EE41DB784F9006CBF1C /* TableViewController */,
+ 447D2EE51DB784F9006CBF1C /* TableViewControllerWithSections */,
+ 14663CA41DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex */,
+ 44B91CEF1DB7728D009DB4B7 /* Assets.xcassets */,
+ 44B91CF11DB7728D009DB4B7 /* LaunchScreen.storyboard */,
+ 44B91CF41DB7728D009DB4B7 /* Info.plist */,
+ );
+ path = SwiftDemo;
+ sourceTree = "";
+ };
+ 44B91CFD1DB7729D009DB4B7 /* ObjectiveCDemo */ = {
+ isa = PBXGroup;
+ children = (
+ 4479C2401DB77BB000803558 /* Root */,
+ 4479C23D1DB77BB000803558 /* Options */,
+ 4471D4D21DB7822C00DE1EBE /* CollectionViewController */,
+ 4471D4DA1DB7822C00DE1EBE /* CollectionViewControllerWithSections */,
+ 4471D4D51DB7822C00DE1EBE /* CollectionViewControllerWithFooter */,
+ 4471D4DD1DB7822C00DE1EBE /* TableViewController */,
+ 4471D4E01DB7822C00DE1EBE /* TableViewControllerWithSections */,
+ 44B91CFE1DB7729D009DB4B7 /* Supporting Files */,
+ );
+ path = ObjectiveCDemo;
sourceTree = "";
};
- 14F535931C3A7E9C00671EDF /* InfiniteTableSwift */ = {
+ 44B91CFE1DB7729D009DB4B7 /* Supporting Files */ = {
isa = PBXGroup;
children = (
- 14F535941C3A7E9C00671EDF /* AppDelegate.swift */,
- 14F5359F1C3A7EC000671EDF /* ViewController.swift */,
- 14F535961C3A7E9C00671EDF /* Assets.xcassets */,
- 14F535981C3A7E9C00671EDF /* LaunchScreen.storyboard */,
- 14F5359B1C3A7E9C00671EDF /* Info.plist */,
+ 44B91D0D1DB7729D009DB4B7 /* Assets.xcassets */,
+ 44B91D0F1DB7729D009DB4B7 /* LaunchScreen.storyboard */,
+ 44B91D121DB7729D009DB4B7 /* Info.plist */,
+ 44B91CFF1DB7729D009DB4B7 /* main.m */,
);
- path = InfiniteTableSwift;
+ name = "Supporting Files";
sourceTree = "";
};
AD64C6A3429E8A3FBFC3CF2D /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 44B91D1A1DB77381009DB4B7 /* DATAStack.framework */,
+ 44B91D161DB77375009DB4B7 /* DATAStack.framework */,
14C022581CC9031F00CEFC40 /* DATAStack.framework */,
149EE8791CC916DB002739BA /* DATAStack.framework */,
14C022541CC9031700CEFC40 /* DATAStack.framework */,
@@ -637,24 +506,6 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 1462057F1C3AB0E400D78FC5 /* InfiniteCollectionSwift */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1462058C1C3AB0E400D78FC5 /* Build configuration list for PBXNativeTarget "InfiniteCollectionSwift" */;
- buildPhases = (
- 1462057C1C3AB0E400D78FC5 /* Sources */,
- 1462057D1C3AB0E400D78FC5 /* Frameworks */,
- 1462057E1C3AB0E400D78FC5 /* Resources */,
- 14C0226F1CC9036200CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = InfiniteCollectionSwift;
- productName = InfiniteCollectionSwift;
- productReference = 146205801C3AB0E400D78FC5 /* InfiniteCollectionSwift.app */;
- productType = "com.apple.product-type.application";
- };
146D72AB1AB782920058798C /* Tests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 146D72B91AB782920058798C /* Build configuration list for PBXNativeTarget "Tests" */;
@@ -673,114 +524,6 @@
productReference = 146D72AC1AB782920058798C /* Tests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
- 149AF18F1C0EB9EF00BA0907 /* DATASourceDelegateTableSwift */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 149AF19F1C0EB9EF00BA0907 /* Build configuration list for PBXNativeTarget "DATASourceDelegateTableSwift" */;
- buildPhases = (
- 149AF18C1C0EB9EF00BA0907 /* Sources */,
- 149AF18D1C0EB9EF00BA0907 /* Frameworks */,
- 149AF18E1C0EB9EF00BA0907 /* Resources */,
- 14C022671CC9034E00CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = DATASourceDelegateTableSwift;
- productName = DATASourceDelegateTableSwift;
- productReference = 149AF1901C0EB9EF00BA0907 /* DATASourceDelegateTableSwift.app */;
- productType = "com.apple.product-type.application";
- };
- 14F3A6791BE01B8400789E22 /* CollectionSwift */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 14F3A6891BE01B8500789E22 /* Build configuration list for PBXNativeTarget "CollectionSwift" */;
- buildPhases = (
- 14F3A6761BE01B8400789E22 /* Sources */,
- 14F3A6771BE01B8400789E22 /* Frameworks */,
- 14F3A6781BE01B8400789E22 /* Resources */,
- 14C022571CC9031700CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = CollectionSwift;
- productName = CollectionSwift;
- productReference = 14F3A67A1BE01B8400789E22 /* CollectionSwift.app */;
- productType = "com.apple.product-type.application";
- };
- 14F3A68D1BE01B9200789E22 /* CollectionObjC */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 14F3A69F1BE01B9200789E22 /* Build configuration list for PBXNativeTarget "CollectionObjC" */;
- buildPhases = (
- 14F3A68A1BE01B9200789E22 /* Sources */,
- 14F3A68B1BE01B9200789E22 /* Frameworks */,
- 14F3A68C1BE01B9200789E22 /* Resources */,
- 14C0225B1CC9031F00CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = CollectionObjC;
- productName = CollectionObjC;
- productReference = 14F3A68E1BE01B9200789E22 /* CollectionObjC.app */;
- productType = "com.apple.product-type.application";
- };
- 14F3A6A51BE01B9C00789E22 /* TableSwift */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 14F3A6B31BE01B9C00789E22 /* Build configuration list for PBXNativeTarget "TableSwift" */;
- buildPhases = (
- 14F3A6A21BE01B9C00789E22 /* Sources */,
- 14F3A6A31BE01B9C00789E22 /* Frameworks */,
- 14F3A6A41BE01B9C00789E22 /* Resources */,
- 14C0225F1CC9033C00CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = TableSwift;
- productName = TableSwift;
- productReference = 14F3A6A61BE01B9C00789E22 /* TableSwift.app */;
- productType = "com.apple.product-type.application";
- };
- 14F3A6B91BE01BA900789E22 /* TableObjC */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 14F3A6CB1BE01BA900789E22 /* Build configuration list for PBXNativeTarget "TableObjC" */;
- buildPhases = (
- 14F3A6B61BE01BA900789E22 /* Sources */,
- 14F3A6B71BE01BA900789E22 /* Frameworks */,
- 14F3A6B81BE01BA900789E22 /* Resources */,
- 14C022631CC9034500CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = TableObjC;
- productName = TableObjC;
- productReference = 14F3A6BA1BE01BA900789E22 /* TableObjC.app */;
- productType = "com.apple.product-type.application";
- };
- 14F535911C3A7E9C00671EDF /* InfiniteTableSwift */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 14F5359E1C3A7E9C00671EDF /* Build configuration list for PBXNativeTarget "InfiniteTableSwift" */;
- buildPhases = (
- 14F5358E1C3A7E9C00671EDF /* Sources */,
- 14F5358F1C3A7E9C00671EDF /* Frameworks */,
- 14F535901C3A7E9C00671EDF /* Resources */,
- 14C0226B1CC9035800CEFC40 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = InfiniteTableSwift;
- productName = InfiniteTableSwift;
- productReference = 14F535921C3A7E9C00671EDF /* InfiniteTableSwift.app */;
- productType = "com.apple.product-type.application";
- };
14F848661CC667990052E4B0 /* DATASource-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 14F8486E1CC667990052E4B0 /* Build configuration list for PBXNativeTarget "DATASource-iOS" */;
@@ -817,6 +560,42 @@
productReference = 14F8487D1CC668820052E4B0 /* DATASource.framework */;
productType = "com.apple.product-type.framework";
};
+ 44B91CE31DB7728D009DB4B7 /* SwiftDemo */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 44B91CF51DB7728D009DB4B7 /* Build configuration list for PBXNativeTarget "SwiftDemo" */;
+ buildPhases = (
+ 44B91CE01DB7728D009DB4B7 /* Sources */,
+ 44B91CE11DB7728D009DB4B7 /* Frameworks */,
+ 44B91CE21DB7728D009DB4B7 /* Resources */,
+ 44B91D191DB77375009DB4B7 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwiftDemo;
+ productName = SwiftDemo;
+ productReference = 44B91CE41DB7728D009DB4B7 /* SwiftDemo.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 44B91CFB1DB7729D009DB4B7 /* ObjectiveCDemo */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 44B91D131DB7729D009DB4B7 /* Build configuration list for PBXNativeTarget "ObjectiveCDemo" */;
+ buildPhases = (
+ 44B91CF81DB7729D009DB4B7 /* Sources */,
+ 44B91CF91DB7729D009DB4B7 /* Frameworks */,
+ 44B91CFA1DB7729D009DB4B7 /* Resources */,
+ 44B91D1D1DB77381009DB4B7 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ObjectiveCDemo;
+ productName = ObjectiveCDemo;
+ productReference = 44B91CFC1DB7729D009DB4B7 /* ObjectiveCDemo.app */;
+ productType = "com.apple.product-type.application";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -824,16 +603,10 @@
isa = PBXProject;
attributes = {
CLASSPREFIX = "";
- LastSwiftUpdateCheck = 0720;
+ LastSwiftUpdateCheck = 0800;
LastUpgradeCheck = 0800;
ORGANIZATIONNAME = "";
TargetAttributes = {
- 1462057F1C3AB0E400D78FC5 = {
- CreatedOnToolsVersion = 7.2;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
146D72AB1AB782920058798C = {
CreatedOnToolsVersion = 6.2;
DevelopmentTeam = C6K65RDJHL;
@@ -841,42 +614,6 @@
LastSwiftMigration = 0800;
ProvisioningStyle = Automatic;
};
- 149AF18F1C0EB9EF00BA0907 = {
- CreatedOnToolsVersion = 7.1;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
- 14F3A6791BE01B8400789E22 = {
- CreatedOnToolsVersion = 7.1;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
- 14F3A68D1BE01B9200789E22 = {
- CreatedOnToolsVersion = 7.1;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
- 14F3A6A51BE01B9C00789E22 = {
- CreatedOnToolsVersion = 7.1;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
- 14F3A6B91BE01BA900789E22 = {
- CreatedOnToolsVersion = 7.1;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
- 14F535911C3A7E9C00671EDF = {
- CreatedOnToolsVersion = 7.2;
- DevelopmentTeam = 29X3GG489T;
- DevelopmentTeamName = "Elvis Nunez (Personal Team)";
- LastSwiftMigration = 0800;
- };
14F848661CC667990052E4B0 = {
CreatedOnToolsVersion = 7.3;
DevelopmentTeam = C6K65RDJHL;
@@ -889,6 +626,16 @@
DevelopmentTeamName = "Elvis Nunez (Personal Team)";
LastSwiftMigration = 0800;
};
+ 44B91CE31DB7728D009DB4B7 = {
+ CreatedOnToolsVersion = 8.0;
+ DevelopmentTeam = 29X3GG489T;
+ ProvisioningStyle = Automatic;
+ };
+ 44B91CFB1DB7729D009DB4B7 = {
+ CreatedOnToolsVersion = 8.0;
+ DevelopmentTeam = 3TAZ984YN3;
+ ProvisioningStyle = Automatic;
+ };
};
};
buildConfigurationList = 146D728E1AB782920058798C /* Build configuration list for PBXProject "Demo" */;
@@ -905,251 +652,70 @@
projectRoot = "";
targets = (
146D72AB1AB782920058798C /* Tests */,
- 14F3A6791BE01B8400789E22 /* CollectionSwift */,
- 14F3A68D1BE01B9200789E22 /* CollectionObjC */,
- 14F3A6A51BE01B9C00789E22 /* TableSwift */,
- 14F3A6B91BE01BA900789E22 /* TableObjC */,
- 149AF18F1C0EB9EF00BA0907 /* DATASourceDelegateTableSwift */,
- 14F535911C3A7E9C00671EDF /* InfiniteTableSwift */,
- 1462057F1C3AB0E400D78FC5 /* InfiniteCollectionSwift */,
14F848661CC667990052E4B0 /* DATASource-iOS */,
14F8487C1CC668820052E4B0 /* DATASource-tvOS */,
+ 44B91CE31DB7728D009DB4B7 /* SwiftDemo */,
+ 44B91CFB1DB7729D009DB4B7 /* ObjectiveCDemo */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 1462057E1C3AB0E400D78FC5 /* Resources */ = {
+ 146D72AA1AB782920058798C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 146205851C3AB0E400D78FC5 /* Assets.xcassets in Resources */,
- 146205881C3AB0E400D78FC5 /* LaunchScreen.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 146D72AA1AB782920058798C /* Resources */ = {
+ 14F848651CC667990052E4B0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
- 149AF18E1C0EB9EF00BA0907 /* Resources */ = {
+ 14F8487B1CC668820052E4B0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 149AF1981C0EB9EF00BA0907 /* Assets.xcassets in Resources */,
- 149AF19B1C0EB9EF00BA0907 /* LaunchScreen.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 14F3A6781BE01B8400789E22 /* Resources */ = {
+ 44B91CE21DB7728D009DB4B7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 14F3A6821BE01B8500789E22 /* Assets.xcassets in Resources */,
- 14F3A6851BE01B8500789E22 /* LaunchScreen.storyboard in Resources */,
+ 44B91CF31DB7728D009DB4B7 /* LaunchScreen.storyboard in Resources */,
+ 44B91CF01DB7728D009DB4B7 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 14F3A68C1BE01B9200789E22 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14F3A69A1BE01B9200789E22 /* Assets.xcassets in Resources */,
- 14F3A69D1BE01B9200789E22 /* LaunchScreen.storyboard in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6A41BE01B9C00789E22 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14F3A6AE1BE01B9C00789E22 /* Assets.xcassets in Resources */,
- 14F3A6B11BE01B9C00789E22 /* LaunchScreen.storyboard in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6B81BE01BA900789E22 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14F3A6C61BE01BA900789E22 /* Assets.xcassets in Resources */,
- 14F3A6C91BE01BA900789E22 /* LaunchScreen.storyboard in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F535901C3A7E9C00671EDF /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14F535971C3A7E9C00671EDF /* Assets.xcassets in Resources */,
- 14F5359A1C3A7E9C00671EDF /* LaunchScreen.storyboard in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F848651CC667990052E4B0 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F8487B1CC668820052E4B0 /* Resources */ = {
+ 44B91CFA1DB7729D009DB4B7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 44B91D111DB7729D009DB4B7 /* LaunchScreen.storyboard in Resources */,
+ 44B91D0E1DB7729D009DB4B7 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 1462057C1C3AB0E400D78FC5 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14308AC91CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- 146205831C3AB0E400D78FC5 /* AppDelegate.swift in Sources */,
- 14308AA91CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 1498B6161C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308AB91CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308AD11CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- 14308AC11CC66665000C21DF /* DATASource.swift in Sources */,
- 14F7B07C1C3AB23000AE779F /* CollectionController.swift in Sources */,
- 1498B61D1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 14308AB11CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 1498B60F1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
146D72A81AB782920058798C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 44A8DB601DB77F46009EF5A7 /* Helper.swift in Sources */,
14308AAA1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
14AFFAF11C3C00E3001AD02C /* DataModel.xcdatamodeld in Sources */,
- 14AFFAF21C3C00E5001AD02C /* InfiniteLoadingIndicator.swift in Sources */,
14308AC21CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
14308AB21CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
14308AA21CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
14A139B41AEFC72B00AD732F /* Tests.swift in Sources */,
14308ACA1CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
14308ABA1CC66665000C21DF /* DATASource.swift in Sources */,
- 14AFFAF01C3C00E0001AD02C /* CollectionCell.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 149AF18C1C0EB9EF00BA0907 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14308AC71CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- 149AF1A11C0EBA0700BA0907 /* ViewController.swift in Sources */,
- 14308AA71CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 1498B6141C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308AB71CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308ACF1CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- 14308ABF1CC66665000C21DF /* DATASource.swift in Sources */,
- 149AF1931C0EB9EF00BA0907 /* AppDelegate.swift in Sources */,
- 1498B61B1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 14308AAF1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 1498B60D1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6761BE01B8400789E22 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14308AC31CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- 14F3A67D1BE01B8500789E22 /* AppDelegate.swift in Sources */,
- 14308AA31CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 1498B6101C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308AB31CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308ACB1CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- 14308ABB1CC66665000C21DF /* DATASource.swift in Sources */,
- 14F3A6E41BE01D9200789E22 /* CollectionController.swift in Sources */,
- 1498B6171C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 14308AAB1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 1498B6091C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A68A1BE01B9200789E22 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14F3A6E01BE01D6E00789E22 /* ViewController.m in Sources */,
- 14308AB41CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308AA41CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 14F3A6951BE01B9200789E22 /* AppDelegate.m in Sources */,
- 14F3A6921BE01B9200789E22 /* main.m in Sources */,
- 1498B6111C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308AC41CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- 14F3A6DE1BE01D6E00789E22 /* FooterExampleView.m in Sources */,
- 14308AAC1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 14308ABC1CC66665000C21DF /* DATASource.swift in Sources */,
- 1498B6181C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 1498B60A1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
- 14308ACC1CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6A21BE01B9C00789E22 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14308AB51CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308ACD1CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- 14308AA51CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 14F3A6E91BE01DE800789E22 /* ViewController.swift in Sources */,
- 1498B6121C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308ABD1CC66665000C21DF /* DATASource.swift in Sources */,
- 141D2EE41BE021500028F879 /* CustomCell.swift in Sources */,
- 14308AAD1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 14F3A6A91BE01B9C00789E22 /* AppDelegate.swift in Sources */,
- 1498B60B1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
- 1498B6191C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 14308AC51CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F3A6B61BE01BA900789E22 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14308AB61CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308ACE1CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- 14308AA61CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 14F3A6C11BE01BA900789E22 /* AppDelegate.m in Sources */,
- 1498B6131C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308ABE1CC66665000C21DF /* DATASource.swift in Sources */,
- 14F3A6E71BE01DD000789E22 /* ViewController.m in Sources */,
- 14308AAE1CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 14F3A6BE1BE01BA900789E22 /* main.m in Sources */,
- 1498B60C1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
- 1498B61A1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 14308AC61CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 14F5358E1C3A7E9C00671EDF /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 14308AC81CC66665000C21DF /* DATASourceCollectionHeaderView.swift in Sources */,
- 14F535A01C3A7EC000671EDF /* ViewController.swift in Sources */,
- 14308AA81CC66665000C21DF /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
- 1498B6151C3BC9E80066FAC8 /* DataModel.xcdatamodeld in Sources */,
- 14308AB81CC66665000C21DF /* DATASource+UITableViewDataSource.swift in Sources */,
- 14308AD01CC66665000C21DF /* DATASourceDelegate.swift in Sources */,
- 14308AC01CC66665000C21DF /* DATASource.swift in Sources */,
- 14F535951C3A7E9C00671EDF /* AppDelegate.swift in Sources */,
- 1498B61C1C3BC9E80066FAC8 /* InfiniteLoadingIndicator.swift in Sources */,
- 14308AB01CC66665000C21DF /* DATASource+UICollectionViewDataSource.swift in Sources */,
- 1498B60E1C3BC9E80066FAC8 /* CollectionCell.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1179,61 +745,71 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 146205861C3AB0E400D78FC5 /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 146205871C3AB0E400D78FC5 /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
- 149AF1991C0EB9EF00BA0907 /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 149AF19A1C0EB9EF00BA0907 /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
- 14F3A6831BE01B8500789E22 /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 14F3A6841BE01B8500789E22 /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
- 14F3A69B1BE01B9200789E22 /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 14F3A69C1BE01B9200789E22 /* Base */,
+ 44B91CE01DB7728D009DB4B7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 44B91D321DB77514009DB4B7 /* DataModel.xcdatamodeld in Sources */,
+ 44B91D341DB77517009DB4B7 /* InfiniteLoadingIndicator.swift in Sources */,
+ 44B91D281DB774B6009DB4B7 /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
+ 447D2EEC1DB78559006CBF1C /* CollectionViewControllerWithSections.swift in Sources */,
+ 14663CA61DB97F2D00E8ABFC /* TableViewControllerWithSectionsWithoutIndex.swift in Sources */,
+ 44B91D2E1DB774BF009DB4B7 /* DATASourceCollectionHeaderView.swift in Sources */,
+ 447D2EE71DB784F9006CBF1C /* OptionsController.swift in Sources */,
+ 447D2EE61DB784F9006CBF1C /* CollectionViewController.swift in Sources */,
+ 44B91D2C1DB774BD009DB4B7 /* DATASource+UITableViewDataSource.swift in Sources */,
+ 44B91D261DB774B2009DB4B7 /* DATASourceDelegate.swift in Sources */,
+ 447D2EE81DB784F9006CBF1C /* AppDelegate.swift in Sources */,
+ 44B91D241DB774B0009DB4B7 /* DATASource.swift in Sources */,
+ 447D2EEE1DB7855E006CBF1C /* TableViewController.swift in Sources */,
+ 447D2EF01DB78564006CBF1C /* TableViewControllerWithSections.swift in Sources */,
+ 44B91D2A1DB774B9009DB4B7 /* DATASource+UICollectionViewDataSource.swift in Sources */,
+ 44B91D301DB77511009DB4B7 /* CollectionCell.swift in Sources */,
+ 44A8DB5E1DB77E62009EF5A7 /* Helper.swift in Sources */,
);
- name = LaunchScreen.storyboard;
- sourceTree = "";
+ runOnlyForDeploymentPostprocessing = 0;
};
- 14F3A6AF1BE01B9C00789E22 /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 14F3A6B01BE01B9C00789E22 /* Base */,
+ 44B91CF81DB7729D009DB4B7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 44B91D2F1DB774C0009DB4B7 /* DATASourceCollectionHeaderView.swift in Sources */,
+ 4471D4E61DB7822C00DE1EBE /* CollectionViewControllerWithSections.m in Sources */,
+ 44B91D2D1DB774BD009DB4B7 /* DATASource+UITableViewDataSource.swift in Sources */,
+ 44B91D291DB774B6009DB4B7 /* DATASource+NSFetchedResultsControllerDelegate.swift in Sources */,
+ 44B91D271DB774B4009DB4B7 /* DATASourceDelegate.swift in Sources */,
+ 4471D4E51DB7822C00DE1EBE /* FooterExampleView.m in Sources */,
+ 44B91D001DB7729D009DB4B7 /* main.m in Sources */,
+ 44A8DB5F1DB77E62009EF5A7 /* Helper.swift in Sources */,
+ 44B91D2B1DB774BA009DB4B7 /* DATASource+UICollectionViewDataSource.swift in Sources */,
+ 44B91D331DB77515009DB4B7 /* DataModel.xcdatamodeld in Sources */,
+ 4471D4E31DB7822C00DE1EBE /* CollectionViewController.m in Sources */,
+ 44B91D311DB77511009DB4B7 /* CollectionCell.swift in Sources */,
+ 44B91D351DB77518009DB4B7 /* InfiniteLoadingIndicator.swift in Sources */,
+ 4471D4E71DB7822C00DE1EBE /* TableViewController.m in Sources */,
+ 4479C24C1DB77BB000803558 /* AppDelegate.m in Sources */,
+ 4471D4E81DB7822C00DE1EBE /* TableViewControllerWithSections.m in Sources */,
+ 4479C24B1DB77BB000803558 /* OptionsController.m in Sources */,
+ 44B91D251DB774B0009DB4B7 /* DATASource.swift in Sources */,
+ 4471D4E41DB7822C00DE1EBE /* CollectionViewControllerWithFooter.m in Sources */,
);
- name = LaunchScreen.storyboard;
- sourceTree = "";
+ runOnlyForDeploymentPostprocessing = 0;
};
- 14F3A6C71BE01BA900789E22 /* LaunchScreen.storyboard */ = {
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 44B91CF11DB7728D009DB4B7 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 14F3A6C81BE01BA900789E22 /* Base */,
+ 44B91CF21DB7728D009DB4B7 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "";
};
- 14F535981C3A7E9C00671EDF /* LaunchScreen.storyboard */ = {
+ 44B91D0F1DB7729D009DB4B7 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 14F535991C3A7E9C00671EDF /* Base */,
+ 44B91D101DB7729D009DB4B7 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "";
@@ -1241,48 +817,6 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
- 1462058A1C3AB0E400D78FC5 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = InfiniteCollectionSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.2;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.InfiniteCollectionSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 1462058B1C3AB0E400D78FC5 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = InfiniteCollectionSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.2;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.InfiniteCollectionSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
146D72B41AB782920058798C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1398,264 +932,6 @@
};
name = Release;
};
- 149AF19D1C0EB9EF00BA0907 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = DATASourceDelegateTableSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.DATASourceDelegateTableSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 149AF19E1C0EB9EF00BA0907 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = DATASourceDelegateTableSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.DATASourceDelegateTableSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
- 14F3A6871BE01B8500789E22 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = CollectionSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.CollectionSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 14F3A6881BE01B8500789E22 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = CollectionSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.CollectionSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
- 14F3A6A01BE01B9200789E22 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = CollectionObjC/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.CollectionObjC;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_INSTALL_OBJC_HEADER = YES;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 14F3A6A11BE01B9200789E22 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = CollectionObjC/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.CollectionObjC;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_INSTALL_OBJC_HEADER = YES;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
- 14F3A6B41BE01B9C00789E22 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = TableSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.TableSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 14F3A6B51BE01B9C00789E22 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = TableSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.TableSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
- 14F3A6CC1BE01BA900789E22 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = TableObjC/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.TableObjC;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 14F3A6CD1BE01BA900789E22 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = TableObjC/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.TableObjC;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
- 14F5359C1C3A7E9C00671EDF /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = InfiniteTableSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.2;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.DATASourceDelegateTableSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 14F5359D1C3A7E9C00671EDF /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = 29X3GG489T;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- GCC_NO_COMMON_BLOCKS = YES;
- INFOPLIST_FILE = InfiniteTableSwift/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.2;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = demo.DATASourceDelegateTableSwift;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
14F8486C1CC667990052E4B0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1762,18 +1038,104 @@
};
name = Release;
};
+ 44B91CF61DB7728D009DB4B7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVES = YES;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = 29X3GG489T;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Carthage/Build/iOS",
+ );
+ INFOPLIST_FILE = SwiftDemo/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.3lvis.networking.SwiftDemo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Debug;
+ };
+ 44B91CF71DB7728D009DB4B7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVES = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 29X3GG489T;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Carthage/Build/iOS",
+ );
+ INFOPLIST_FILE = SwiftDemo/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.3lvis.networking.SwiftDemo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Release;
+ };
+ 44B91D141DB7729D009DB4B7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVES = YES;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = 3TAZ984YN3;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Carthage/Build/iOS",
+ );
+ INFOPLIST_FILE = ObjectiveCDemo/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.3lvis.networking.ObjectiveCDemo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Debug;
+ };
+ 44B91D151DB7729D009DB4B7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVES = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 3TAZ984YN3;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Carthage/Build/iOS",
+ );
+ INFOPLIST_FILE = ObjectiveCDemo/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.3lvis.networking.ObjectiveCDemo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 1462058C1C3AB0E400D78FC5 /* Build configuration list for PBXNativeTarget "InfiniteCollectionSwift" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1462058A1C3AB0E400D78FC5 /* Debug */,
- 1462058B1C3AB0E400D78FC5 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
146D728E1AB782920058798C /* Build configuration list for PBXProject "Demo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -1792,74 +1154,38 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 149AF19F1C0EB9EF00BA0907 /* Build configuration list for PBXNativeTarget "DATASourceDelegateTableSwift" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149AF19D1C0EB9EF00BA0907 /* Debug */,
- 149AF19E1C0EB9EF00BA0907 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 14F3A6891BE01B8500789E22 /* Build configuration list for PBXNativeTarget "CollectionSwift" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 14F3A6871BE01B8500789E22 /* Debug */,
- 14F3A6881BE01B8500789E22 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 14F3A69F1BE01B9200789E22 /* Build configuration list for PBXNativeTarget "CollectionObjC" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 14F3A6A01BE01B9200789E22 /* Debug */,
- 14F3A6A11BE01B9200789E22 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 14F3A6B31BE01B9C00789E22 /* Build configuration list for PBXNativeTarget "TableSwift" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 14F3A6B41BE01B9C00789E22 /* Debug */,
- 14F3A6B51BE01B9C00789E22 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 14F3A6CB1BE01BA900789E22 /* Build configuration list for PBXNativeTarget "TableObjC" */ = {
+ 14F8486E1CC667990052E4B0 /* Build configuration list for PBXNativeTarget "DATASource-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 14F3A6CC1BE01BA900789E22 /* Debug */,
- 14F3A6CD1BE01BA900789E22 /* Release */,
+ 14F8486C1CC667990052E4B0 /* Debug */,
+ 14F8486D1CC667990052E4B0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 14F5359E1C3A7E9C00671EDF /* Build configuration list for PBXNativeTarget "InfiniteTableSwift" */ = {
+ 14F848821CC668820052E4B0 /* Build configuration list for PBXNativeTarget "DATASource-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 14F5359C1C3A7E9C00671EDF /* Debug */,
- 14F5359D1C3A7E9C00671EDF /* Release */,
+ 14F848831CC668820052E4B0 /* Debug */,
+ 14F848841CC668820052E4B0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 14F8486E1CC667990052E4B0 /* Build configuration list for PBXNativeTarget "DATASource-iOS" */ = {
+ 44B91CF51DB7728D009DB4B7 /* Build configuration list for PBXNativeTarget "SwiftDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 14F8486C1CC667990052E4B0 /* Debug */,
- 14F8486D1CC667990052E4B0 /* Release */,
+ 44B91CF61DB7728D009DB4B7 /* Debug */,
+ 44B91CF71DB7728D009DB4B7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 14F848821CC668820052E4B0 /* Build configuration list for PBXNativeTarget "DATASource-tvOS" */ = {
+ 44B91D131DB7729D009DB4B7 /* Build configuration list for PBXNativeTarget "ObjectiveCDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 14F848831CC668820052E4B0 /* Debug */,
- 14F848841CC668820052E4B0 /* Release */,
+ 44B91D141DB7729D009DB4B7 /* Debug */,
+ 44B91D151DB7729D009DB4B7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/CollectionObjC.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/CollectionObjC.xcscheme
deleted file mode 100644
index aff4b23..0000000
--- a/Demo.xcodeproj/xcshareddata/xcschemes/CollectionObjC.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/CollectionSwift.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/CollectionSwift.xcscheme
deleted file mode 100644
index 3dfe87c..0000000
--- a/Demo.xcodeproj/xcshareddata/xcschemes/CollectionSwift.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/DATASourceDelegateTableSwift.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/DATASourceDelegateTableSwift.xcscheme
deleted file mode 100644
index bf0d93a..0000000
--- a/Demo.xcodeproj/xcshareddata/xcschemes/DATASourceDelegateTableSwift.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/InfiniteCollectionSwift.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/InfiniteCollectionSwift.xcscheme
deleted file mode 100644
index 61868a7..0000000
--- a/Demo.xcodeproj/xcshareddata/xcschemes/InfiniteCollectionSwift.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/InfiniteTableSwift.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/InfiniteTableSwift.xcscheme
deleted file mode 100644
index 7d5a66d..0000000
--- a/Demo.xcodeproj/xcshareddata/xcschemes/InfiniteTableSwift.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/TableSwift.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/ObjectiveCDemo.xcscheme
similarity index 82%
rename from Demo.xcodeproj/xcshareddata/xcschemes/TableSwift.xcscheme
rename to Demo.xcodeproj/xcshareddata/xcschemes/ObjectiveCDemo.xcscheme
index 6ea5da0..e9861df 100644
--- a/Demo.xcodeproj/xcshareddata/xcschemes/TableSwift.xcscheme
+++ b/Demo.xcodeproj/xcshareddata/xcschemes/ObjectiveCDemo.xcscheme
@@ -14,9 +14,9 @@
buildForAnalyzing = "YES">
@@ -32,9 +32,9 @@
@@ -55,9 +55,9 @@
runnableDebuggingMode = "0">
@@ -81,9 +81,9 @@
runnableDebuggingMode = "0">
diff --git a/Demo.xcodeproj/xcshareddata/xcschemes/TableObjC.xcscheme b/Demo.xcodeproj/xcshareddata/xcschemes/SwiftDemo.xcscheme
similarity index 83%
rename from Demo.xcodeproj/xcshareddata/xcschemes/TableObjC.xcscheme
rename to Demo.xcodeproj/xcshareddata/xcschemes/SwiftDemo.xcscheme
index b6142ed..2d4ff44 100644
--- a/Demo.xcodeproj/xcshareddata/xcschemes/TableObjC.xcscheme
+++ b/Demo.xcodeproj/xcshareddata/xcschemes/SwiftDemo.xcscheme
@@ -14,9 +14,9 @@
buildForAnalyzing = "YES">
@@ -32,9 +32,9 @@
@@ -55,9 +55,9 @@
runnableDebuggingMode = "0">
@@ -81,9 +81,9 @@
runnableDebuggingMode = "0">
diff --git a/InfiniteCollectionSwift/AppDelegate.swift b/InfiniteCollectionSwift/AppDelegate.swift
deleted file mode 100644
index b37cf37..0000000
--- a/InfiniteCollectionSwift/AppDelegate.swift
+++ /dev/null
@@ -1,35 +0,0 @@
-import UIKit
-import CoreData
-import DATAStack
-
-@UIApplicationMain
-class AppDelegate: UIResponder {
- var window: UIWindow?
-
- var dataStack: DATAStack = {
- let dataStack = DATAStack(modelName: "DataModel")
-
- return dataStack
- }()
-}
-
-extension AppDelegate: UIApplicationDelegate {
-
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
- self.window = UIWindow(frame: UIScreen.main.bounds)
- guard let window = self.window else { fatalError("Window not found") }
-
- let bounds = UIScreen.main.bounds
-
- let layout = UICollectionViewFlowLayout()
- layout.itemSize = CGSize(width: 120, height: 120)
- layout.sectionInset = UIEdgeInsets(top: 15, left: 0, bottom: 15, right: 0)
- layout.headerReferenceSize = CGSize(width: bounds.size.width, height: 60)
-
- let viewController = CollectionController(layout: layout, dataStack: self.dataStack)
- window.rootViewController = UINavigationController(rootViewController: viewController)
- window.makeKeyAndVisible()
-
- return true
- }
-}
diff --git a/InfiniteCollectionSwift/Base.lproj/LaunchScreen.storyboard b/InfiniteCollectionSwift/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 2e721e1..0000000
--- a/InfiniteCollectionSwift/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/InfiniteCollectionSwift/CollectionController.swift b/InfiniteCollectionSwift/CollectionController.swift
deleted file mode 100644
index 68d2fd7..0000000
--- a/InfiniteCollectionSwift/CollectionController.swift
+++ /dev/null
@@ -1,121 +0,0 @@
-import UIKit
-
-import DATAStack
-import CoreData
-
-class CollectionController: UICollectionViewController {
- unowned var dataStack: DATAStack
-
- lazy var dataSource: DATASource = {
- guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
-
- let request: NSFetchRequest = NSFetchRequest(entityName: "User")
- request.sortDescriptors = [
- NSSortDescriptor(key: "name", ascending: true),
- NSSortDescriptor(key: "firstLetterOfName", ascending: true),
- ]
-
- let dataSource = DATASource(collectionView: collectionView, cellIdentifier: CollectionCell.Identifier, fetchRequest: request, mainContext: self.dataStack.mainContext, sectionName: "firstLetterOfName", configuration: { cell, item, indexPath in
- let collectionCell = cell as! CollectionCell
- collectionCell.textLabel.text = item.value(forKey: "name") as? String
- })
-
- return dataSource
- }()
-
- lazy var infiniteLoadingIndicator: InfiniteLoadingIndicator = {
- let infiniteLoadingIndicator = InfiniteLoadingIndicator(parentController: self)
-
- return infiniteLoadingIndicator
- }()
-
- init(layout: UICollectionViewLayout, dataStack: DATAStack) {
- self.dataStack = dataStack
-
- super.init(collectionViewLayout: layout)
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
- collectionView.register(CollectionCell.self, forCellWithReuseIdentifier: CollectionCell.Identifier)
- collectionView.dataSource = self.dataSource
- collectionView.backgroundColor = UIColor.white
- collectionView.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
-
- if self.dataSource.isEmpty {
- self.infiniteLoadingIndicator.present()
- self.loadItems(0, completion: {
- self.infiniteLoadingIndicator.dismiss()
- })
- }
- }
-
- var loading = false
-
- override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
- guard let collectionView = self.collectionView else { return }
- guard self.loading == false else { return }
-
- let offset = collectionView.contentOffset.y + UIScreen.main.bounds.height
- if offset >= scrollView.contentSize.height {
- if let item = self.dataSource.objects.last {
- self.loading = true
- self.infiniteLoadingIndicator.present()
- let initialIndex = Int(item.value(forKey: "name") as! String)! + 1
- self.loadItems(initialIndex, completion: {
- self.loading = false
- self.infiniteLoadingIndicator.dismiss()
- print("loaded items starting at \(item.value(forKey: "name")!)")
- })
- }
- }
- }
-
- func loadItems(_ initialIndex: Int, completion: ((Void) -> Void)?) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
- self.dataStack.performInNewBackgroundContext { backgroundContext in
- let entity = NSEntityDescription.entity(forEntityName: "User", in: backgroundContext)!
- for i in initialIndex ..< initialIndex + 18 {
- let user = NSManagedObject(entity: entity, insertInto: backgroundContext)
- user.setValue(String(format: "%04d", i), forKey: "name")
-
- let tens = Int(floor(Double(i) / 10.0) * 10)
- user.setValue(String(tens), forKey: "firstLetterOfName")
- }
-
- try! backgroundContext.save()
- DispatchQueue.main.async {
- completion?()
- }
- }
- }
- }
-}
-
-extension CollectionController {
-
- override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
- guard let numberOfItems = self.collectionView?.numberOfItems(inSection: (indexPath as NSIndexPath).section) else { return }
- var items = [NSManagedObject]()
- for i in 0 ..< numberOfItems {
- let newIndexPath = IndexPath(row: i, section: (indexPath as NSIndexPath).section)
- if let item = self.dataSource.objectAtIndexPath(newIndexPath) {
- items.append(item)
- }
- }
-
- self.dataStack.performInNewBackgroundContext { backgroundContext in
- for item in items {
- let safeItem = backgroundContext.object(with: item.objectID)
- backgroundContext.delete(safeItem)
- }
- try! backgroundContext.save()
- }
- }
-}
diff --git a/InfiniteCollectionSwift/Info.plist b/InfiniteCollectionSwift/Info.plist
deleted file mode 100644
index d39a4da..0000000
--- a/InfiniteCollectionSwift/Info.plist
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/InfiniteTableSwift/AppDelegate.swift b/InfiniteTableSwift/AppDelegate.swift
deleted file mode 100644
index c0cb585..0000000
--- a/InfiniteTableSwift/AppDelegate.swift
+++ /dev/null
@@ -1,28 +0,0 @@
-import UIKit
-import CoreData
-import DATAStack
-
-@UIApplicationMain
-class AppDelegate: UIResponder {
- var window: UIWindow?
-
- var dataStack: DATAStack = {
- let dataStack = DATAStack(modelName: "DataModel")
-
- return dataStack
- }()
-}
-
-extension AppDelegate: UIApplicationDelegate {
-
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
- self.window = UIWindow(frame: UIScreen.main.bounds)
- guard let window = self.window else { fatalError("Window not found") }
-
- let viewController = ViewController(dataStack: self.dataStack)
- window.rootViewController = UINavigationController(rootViewController: viewController)
- window.makeKeyAndVisible()
-
- return true
- }
-}
diff --git a/InfiniteTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json b/InfiniteTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 118c98f..0000000
--- a/InfiniteTableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/InfiniteTableSwift/Base.lproj/LaunchScreen.storyboard b/InfiniteTableSwift/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 2e721e1..0000000
--- a/InfiniteTableSwift/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/InfiniteTableSwift/Info.plist b/InfiniteTableSwift/Info.plist
deleted file mode 100644
index d39a4da..0000000
--- a/InfiniteTableSwift/Info.plist
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/InfiniteTableSwift/ViewController.swift b/InfiniteTableSwift/ViewController.swift
deleted file mode 100644
index 6c46137..0000000
--- a/InfiniteTableSwift/ViewController.swift
+++ /dev/null
@@ -1,98 +0,0 @@
-import UIKit
-import DATAStack
-import CoreData
-
-class ViewController: UITableViewController {
- static let Identifier = "Identifier"
- weak var dataStack: DATAStack?
-
- lazy var dataSource: DATASource = {
- let request: NSFetchRequest = NSFetchRequest(entityName: "User")
- request.sortDescriptors = [
- NSSortDescriptor(key: "name", ascending: true),
- NSSortDescriptor(key: "firstLetterOfName", ascending: true),
- ]
-
- let dataSource = DATASource(tableView: self.tableView, cellIdentifier: ViewController.Identifier, fetchRequest: request, mainContext: self.dataStack!.mainContext, sectionName: "firstLetterOfName", configuration: { cell, item, indexPath in
- cell.textLabel?.text = item.value(forKey: "name") as? String
- })
-
- dataSource.delegate = self
-
- return dataSource
- }()
-
- lazy var infiniteLoadingIndicator: InfiniteLoadingIndicator = {
- let infiniteLoadingIndicator = InfiniteLoadingIndicator(parentController: self.parent!)
-
- return infiniteLoadingIndicator
- }()
-
- convenience init(dataStack: DATAStack) {
- self.init(style: .plain)
-
- self.dataStack = dataStack
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: ViewController.Identifier)
- self.tableView.dataSource = self.dataSource
-
- if self.dataSource.isEmpty {
- self.infiniteLoadingIndicator.present()
- self.loadItems(0, completion: {
- self.infiniteLoadingIndicator.dismiss()
- })
- }
- }
-
- var loading = false
-
- override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
- guard let tableView = self.tableView else { return }
- guard self.loading == false else { return }
-
- let offset = tableView.contentOffset.y + UIScreen.main.bounds.height
- if offset >= scrollView.contentSize.height {
- if let item = self.dataSource.objects.last {
- self.loading = true
- self.infiniteLoadingIndicator.present()
- let initialIndex = Int(item.value(forKey: "name") as! String)! + 1
- self.loadItems(initialIndex, completion: {
- self.loading = false
- self.infiniteLoadingIndicator.dismiss()
- print("loaded items starting at \(item.value(forKey: "name")!)")
- })
- }
- }
- }
-
- func loadItems(_ initialIndex: Int, completion: ((Void) -> Void)?) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
- self.dataStack!.performInNewBackgroundContext { backgroundContext in
- let entity = NSEntityDescription.entity(forEntityName: "User", in: backgroundContext)!
- for i in initialIndex ..< initialIndex + 18 {
- let user = NSManagedObject(entity: entity, insertInto: backgroundContext)
- user.setValue(String(format: "%04d", i), forKey: "name")
-
- let tens = Int(floor(Double(i) / 10.0) * 10)
- user.setValue(String(tens), forKey: "firstLetterOfName")
- }
-
- try! backgroundContext.save()
- DispatchQueue.main.async {
- completion?()
- }
- }
- }
- }
-}
-
-extension ViewController: DATASourceDelegate {
-
- func sectionIndexTitlesForDataSource(_ dataSource: DATASource, tableView: UITableView) -> [String] {
- return [String]()
- }
-}
diff --git a/Library/Helper.swift b/Library/Helper.swift
new file mode 100644
index 0000000..b537df5
--- /dev/null
+++ b/Library/Helper.swift
@@ -0,0 +1,39 @@
+import Foundation
+import DATAStack
+
+public class Helper: NSObject {
+ public class func addNewUser(dataStack: DATAStack) {
+ dataStack.performInNewBackgroundContext { backgroundContext in
+ if let entity = NSEntityDescription.entity(forEntityName: "User", in: backgroundContext) {
+ let user = NSManagedObject(entity: entity, insertInto: backgroundContext)
+
+ let name = self.randomString()
+ let firstLetter = String(name[name.startIndex])
+ user.setValue(name, forKey: "name")
+ user.setValue(firstLetter.uppercased(), forKey: "firstLetterOfName")
+ do {
+ try backgroundContext.save()
+ } catch let savingError as NSError {
+ print("Could not save \(savingError)")
+ } catch {
+ fatalError()
+ }
+ } else {
+ print("Oh no")
+ }
+ }
+ }
+
+ class func randomString() -> String {
+ let letters = "ABCDEFGHIJKL"
+ var string = ""
+ for _ in 0 ... 5 {
+ let token = UInt32(letters.characters.count)
+ let letterIndex = Int(arc4random_uniform(token))
+ let firstChar = Array(letters.characters)[letterIndex]
+ string.append(firstChar)
+ }
+
+ return string
+ }
+}
diff --git a/InfiniteCollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json b/ObjectiveCDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 77%
rename from InfiniteCollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to ObjectiveCDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
index 118c98f..b8236c6 100644
--- a/InfiniteCollectionSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ObjectiveCDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,5 +1,15 @@
{
"images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
{
"idiom" : "iphone",
"size" : "29x29",
diff --git a/ObjectiveCDemo/Assets.xcassets/Contents.json b/ObjectiveCDemo/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..da4a164
--- /dev/null
+++ b/ObjectiveCDemo/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/CollectionSwift/Base.lproj/LaunchScreen.storyboard b/ObjectiveCDemo/Base.lproj/LaunchScreen.storyboard
similarity index 70%
rename from CollectionSwift/Base.lproj/LaunchScreen.storyboard
rename to ObjectiveCDemo/Base.lproj/LaunchScreen.storyboard
index 2e721e1..fdf3f97 100644
--- a/CollectionSwift/Base.lproj/LaunchScreen.storyboard
+++ b/ObjectiveCDemo/Base.lproj/LaunchScreen.storyboard
@@ -1,7 +1,8 @@
-
+
-
+
+
@@ -13,10 +14,9 @@
-
+
-
-
+
diff --git a/CollectionObjC/ViewController.h b/ObjectiveCDemo/CollectionViewController/CollectionViewController.h
similarity index 68%
rename from CollectionObjC/ViewController.h
rename to ObjectiveCDemo/CollectionViewController/CollectionViewController.h
index feaafa4..c819b18 100755
--- a/CollectionObjC/ViewController.h
+++ b/ObjectiveCDemo/CollectionViewController/CollectionViewController.h
@@ -2,7 +2,7 @@
@class DATAStack;
-@interface ViewController : UICollectionViewController
+@interface CollectionViewController : UICollectionViewController
- (instancetype)initWithLayout:(UICollectionViewLayout *)layout andDataStack:(DATAStack *)dataStack;
diff --git a/ObjectiveCDemo/CollectionViewController/CollectionViewController.m b/ObjectiveCDemo/CollectionViewController/CollectionViewController.m
new file mode 100755
index 0000000..fe6b7d8
--- /dev/null
+++ b/ObjectiveCDemo/CollectionViewController/CollectionViewController.m
@@ -0,0 +1,65 @@
+#import "CollectionViewController.h"
+
+@import DATAStack;
+@import CoreData;
+
+#import "FooterExampleView.h"
+#import "ObjectiveCDemo-Swift.h"
+
+@interface CollectionViewController ()
+
+@property (nonatomic, weak) DATAStack *dataStack;
+@property (nonatomic) DATASource *dataSource;
+
+@end
+
+@implementation CollectionViewController
+
+- (instancetype)initWithLayout:(UICollectionViewLayout *)layout
+ andDataStack:(DATAStack *)dataStack {
+ self = [super initWithCollectionViewLayout:layout];
+ if (!self) return nil;
+
+ _dataStack = dataStack;
+
+ return self;
+}
+
+- (DATASource *)dataSource {
+ if (_dataSource) return _dataSource;
+
+ NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"User"];
+ request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
+
+ _dataSource = [[DATASource alloc] initWithCollectionView:self.collectionView
+ cellIdentifier:[CollectionCell Identifier]
+ fetchRequest:request
+ mainContext:self.dataStack.mainContext
+ sectionName:nil
+ configuration:^(UICollectionViewCell * _Nonnull cell, NSManagedObject * _Nonnull item, NSIndexPath * _Nonnull indexPath) {
+ CollectionCell *collectionCell = (CollectionCell *)cell;
+ collectionCell.textLabel.text = [item valueForKey:@"name"];
+ }];
+ _dataSource.delegate = self;
+
+ return _dataSource;
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ [self.collectionView registerClass:[CollectionCell class] forCellWithReuseIdentifier:[CollectionCell Identifier]];
+ UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
+ target:self
+ action:@selector(addAction)];
+ self.navigationItem.rightBarButtonItem = item;
+ self.collectionView.dataSource = self.dataSource;
+ self.collectionView.backgroundColor = [UIColor whiteColor];
+ self.collectionView.contentInset = UIEdgeInsetsMake(20.0, 20.0, 20.0, 20.0);
+}
+
+- (void)addAction {
+ [Helper addNewUserWithDataStack:self.dataStack];
+}
+
+@end
diff --git a/ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.h b/ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.h
new file mode 100644
index 0000000..27f362a
--- /dev/null
+++ b/ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.h
@@ -0,0 +1,10 @@
+@import UIKit;
+
+@class DATAStack;
+
+@interface CollectionViewControllerWithFooter : UICollectionViewController
+
+- (instancetype)initWithLayout:(UICollectionViewLayout *)layout andDataStack:(DATAStack *)dataStack;
+
+@end
+
diff --git a/CollectionObjC/ViewController.m b/ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.m
old mode 100755
new mode 100644
similarity index 71%
rename from CollectionObjC/ViewController.m
rename to ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.m
index 0e7e390..5fd726d
--- a/CollectionObjC/ViewController.m
+++ b/ObjectiveCDemo/CollectionViewControllerWithFooter/CollectionViewControllerWithFooter.m
@@ -1,19 +1,19 @@
-#import "ViewController.h"
+#import "CollectionViewControllerWithFooter.h"
@import DATAStack;
@import CoreData;
#import "FooterExampleView.h"
-#import "CollectionObjC-Swift.h"
+#import "ObjectiveCDemo-Swift.h"
-@interface ViewController ()
+@interface CollectionViewControllerWithFooter ()
@property (nonatomic, weak) DATAStack *dataStack;
@property (nonatomic) DATASource *dataSource;
@end
-@implementation ViewController
+@implementation CollectionViewControllerWithFooter
- (instancetype)initWithLayout:(UICollectionViewLayout *)layout
andDataStack:(DATAStack *)dataStack {
@@ -29,7 +29,8 @@ - (DATASource *)dataSource {
if (_dataSource) return _dataSource;
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"User"];
- request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"firstLetterOfName" ascending:YES], [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
+ request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"firstLetterOfName" ascending:YES],
+ [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
_dataSource = [[DATASource alloc] initWithCollectionView:self.collectionView
cellIdentifier:[CollectionCell Identifier]
@@ -61,30 +62,7 @@ - (void)viewDidLoad {
}
- (void)addAction {
- [self.dataStack performInNewBackgroundContext:^(NSManagedObjectContext *backgroundContext) {
- NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
- inManagedObjectContext:backgroundContext];
- NSManagedObject *user = [[NSManagedObject alloc] initWithEntity:entity
- insertIntoManagedObjectContext:backgroundContext];
- NSString *name = [self randomString];
- NSString *firstLetter = [[name substringToIndex:1] uppercaseString];
- [user setValue:name forKey:@"name"];
- [user setValue:firstLetter forKey:@"firstLetterOfName"];
- [backgroundContext save:nil];
- }];
-}
-
-- (NSString *)randomString {
- NSString *letters = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-
- NSMutableString *randomString = [NSMutableString stringWithCapacity:10];
-
- for (int i = 0; i < 10; i++) {
- u_int32_t rnd = (u_int32_t)[letters length];
- [randomString appendFormat: @"%C", [letters characterAtIndex:arc4random_uniform(rnd)]];
- }
-
- return randomString;
+ [Helper addNewUserWithDataStack:self.dataStack];
}
#pragma mark - DATASourceDelegate
diff --git a/CollectionObjC/FooterExampleView.h b/ObjectiveCDemo/CollectionViewControllerWithFooter/FooterExampleView.h
similarity index 100%
rename from CollectionObjC/FooterExampleView.h
rename to ObjectiveCDemo/CollectionViewControllerWithFooter/FooterExampleView.h
diff --git a/CollectionObjC/FooterExampleView.m b/ObjectiveCDemo/CollectionViewControllerWithFooter/FooterExampleView.m
similarity index 100%
rename from CollectionObjC/FooterExampleView.m
rename to ObjectiveCDemo/CollectionViewControllerWithFooter/FooterExampleView.m
diff --git a/ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.h b/ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.h
new file mode 100644
index 0000000..f337484
--- /dev/null
+++ b/ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.h
@@ -0,0 +1,10 @@
+@import UIKit;
+
+@class DATAStack;
+
+@interface CollectionViewControllerWithSections : UICollectionViewController
+
+- (instancetype)initWithLayout:(UICollectionViewLayout *)layout andDataStack:(DATAStack *)dataStack;
+
+@end
+
diff --git a/ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.m b/ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.m
new file mode 100644
index 0000000..3c12a54
--- /dev/null
+++ b/ObjectiveCDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.m
@@ -0,0 +1,66 @@
+#import "CollectionViewControllerWithSections.h"
+
+@import DATAStack;
+@import CoreData;
+
+#import "FooterExampleView.h"
+#import "ObjectiveCDemo-Swift.h"
+
+@interface CollectionViewControllerWithSections ()
+
+@property (nonatomic, weak) DATAStack *dataStack;
+@property (nonatomic) DATASource *dataSource;
+
+@end
+
+@implementation CollectionViewControllerWithSections
+
+- (instancetype)initWithLayout:(UICollectionViewLayout *)layout
+ andDataStack:(DATAStack *)dataStack {
+ self = [super initWithCollectionViewLayout:layout];
+ if (!self) return nil;
+
+ _dataStack = dataStack;
+
+ return self;
+}
+
+- (DATASource *)dataSource {
+ if (_dataSource) return _dataSource;
+
+ NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"User"];
+ request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"firstLetterOfName" ascending:YES],
+ [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
+
+ _dataSource = [[DATASource alloc] initWithCollectionView:self.collectionView
+ cellIdentifier:[CollectionCell Identifier]
+ fetchRequest:request
+ mainContext:self.dataStack.mainContext
+ sectionName:@"firstLetterOfName"
+ configuration:^(UICollectionViewCell * _Nonnull cell, NSManagedObject * _Nonnull item, NSIndexPath * _Nonnull indexPath) {
+ CollectionCell *collectionCell = (CollectionCell *)cell;
+ collectionCell.textLabel.text = [item valueForKey:@"name"];
+ }];
+ _dataSource.delegate = self;
+
+ return _dataSource;
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ [self.collectionView registerClass:[CollectionCell class] forCellWithReuseIdentifier:[CollectionCell Identifier]];
+ UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
+ target:self
+ action:@selector(addAction)];
+ self.navigationItem.rightBarButtonItem = item;
+ self.collectionView.dataSource = self.dataSource;
+ self.collectionView.backgroundColor = [UIColor whiteColor];
+ self.collectionView.contentInset = UIEdgeInsetsMake(20.0, 20.0, 20.0, 20.0);
+}
+
+- (void)addAction {
+ [Helper addNewUserWithDataStack:self.dataStack];
+}
+
+@end
diff --git a/CollectionSwift/Info.plist b/ObjectiveCDemo/Info.plist
similarity index 84%
rename from CollectionSwift/Info.plist
rename to ObjectiveCDemo/Info.plist
index d39a4da..392d758 100644
--- a/CollectionSwift/Info.plist
+++ b/ObjectiveCDemo/Info.plist
@@ -16,8 +16,6 @@
APPL
CFBundleShortVersionString
1.0
- CFBundleSignature
- ????
CFBundleVersion
1
LSRequiresIPhoneOS
@@ -28,6 +26,16 @@
armv7
+ UIStatusBarTintParameters
+
+ UINavigationBar
+
+ Style
+ UIBarStyleDefault
+ Translucent
+
+
+
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
diff --git a/ObjectiveCDemo/Options/OptionsController.h b/ObjectiveCDemo/Options/OptionsController.h
new file mode 100644
index 0000000..fbf7739
--- /dev/null
+++ b/ObjectiveCDemo/Options/OptionsController.h
@@ -0,0 +1,8 @@
+@import UIKit;
+@import DATAStack;
+
+@interface OptionsController : UITableViewController
+
+- (instancetype)initWithDataStack:(DATAStack *)dataStack;
+
+@end
diff --git a/ObjectiveCDemo/Options/OptionsController.m b/ObjectiveCDemo/Options/OptionsController.m
new file mode 100644
index 0000000..47dadd0
--- /dev/null
+++ b/ObjectiveCDemo/Options/OptionsController.m
@@ -0,0 +1,104 @@
+#import "OptionsController.h"
+
+#import "CollectionViewController.h"
+#import "CollectionViewControllerWithSections.h"
+#import "CollectionViewControllerWithFooter.h"
+
+#import "TableViewController.h"
+#import "TableViewControllerWithSections.h"
+
+@interface OptionsController ()
+
+@property (nonnull, strong) DATAStack *dataStack;
+
+@end
+
+@implementation OptionsController
+
+- (instancetype)initWithDataStack:(DATAStack *)dataStack {
+ self = [super initWithStyle:UITableViewStylePlain];
+ if (!self) return nil;
+
+ _dataStack = dataStack;
+
+ return self;
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+ return 5;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+
+ switch (indexPath.row) {
+ case 0:
+ cell.textLabel.text = @"CollectionViewController";
+ break;
+ case 1:
+ cell.textLabel.text = @"CollectionViewControllerWithSections";
+ break;
+ case 2:
+ cell.textLabel.text = @"CollectionViewControllerWithFooter";
+ break;
+ case 3:
+ cell.textLabel.text = @"TableViewController";
+ break;
+ case 4:
+ cell.textLabel.text = @"TableViewControllerWithSections";
+ break;
+ default:
+ break;
+ }
+
+ return cell;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ switch (indexPath.row) {
+ case 0: {
+ UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+ layout.itemSize = CGSizeMake(120.0, 120.0);
+ CollectionViewController *controller = [[CollectionViewController alloc] initWithLayout:layout andDataStack:self.dataStack];
+ [self.navigationController pushViewController:controller animated:YES];
+ } break;
+ case 1: {
+ CGRect bounds = [UIScreen mainScreen].bounds;
+ UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+ layout.itemSize = CGSizeMake(120.0, 120.0);
+ layout.sectionInset = UIEdgeInsetsMake(15.0, 0.0, 15.0, 0.0);
+ layout.headerReferenceSize = CGSizeMake(bounds.size.width, 60.0);
+ CollectionViewControllerWithSections *controller = [[CollectionViewControllerWithSections alloc] initWithLayout:layout andDataStack:self.dataStack];
+ [self.navigationController pushViewController:controller animated:YES];
+ } break;
+ case 2: {
+ CGRect bounds = [UIScreen mainScreen].bounds;
+ UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+ layout.itemSize = CGSizeMake(120.0, 120.0);
+ layout.sectionInset = UIEdgeInsetsMake(15.0, 0.0, 15.0, 0.0);
+ layout.headerReferenceSize = CGSizeMake(bounds.size.width, 60.0);
+ layout.footerReferenceSize = CGSizeMake(bounds.size.width, 60.0);
+ CollectionViewControllerWithFooter *controller = [[CollectionViewControllerWithFooter alloc] initWithLayout:layout andDataStack:self.dataStack];
+ [self.navigationController pushViewController:controller animated:YES];
+ } break;
+ case 3: {
+ TableViewController *controller = [[TableViewController alloc] initWithDataStack:self.dataStack];
+ [self.navigationController pushViewController:controller animated:YES];
+ } break;
+ case 4: {
+ TableViewControllerWithSections *controller = [[TableViewControllerWithSections alloc] initWithDataStack:self.dataStack];
+ [self.navigationController pushViewController:controller animated:YES];
+ } break;
+ default:
+ break;
+ }
+}
+
+@end
diff --git a/CollectionObjC/AppDelegate.h b/ObjectiveCDemo/Root/AppDelegate.h
old mode 100755
new mode 100644
similarity index 99%
rename from CollectionObjC/AppDelegate.h
rename to ObjectiveCDemo/Root/AppDelegate.h
index 72000f0..78d3f7e
--- a/CollectionObjC/AppDelegate.h
+++ b/ObjectiveCDemo/Root/AppDelegate.h
@@ -5,4 +5,3 @@
@property (nonatomic) UIWindow *window;
@end
-
diff --git a/CollectionObjC/AppDelegate.m b/ObjectiveCDemo/Root/AppDelegate.m
old mode 100755
new mode 100644
similarity index 57%
rename from CollectionObjC/AppDelegate.m
rename to ObjectiveCDemo/Root/AppDelegate.m
index b330d35..a9a5aa9
--- a/CollectionObjC/AppDelegate.m
+++ b/ObjectiveCDemo/Root/AppDelegate.m
@@ -1,7 +1,7 @@
#import "AppDelegate.h"
@import DATAStack;
-#import "ViewController.h"
+#import "OptionsController.h"
@interface AppDelegate ()
@@ -25,14 +25,10 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
CGRect bounds = [UIScreen mainScreen].bounds;
self.window = [[UIWindow alloc] initWithFrame:bounds];
- UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
- layout.itemSize = CGSizeMake(120.0, 120.0);
- layout.sectionInset = UIEdgeInsetsMake(15.0, 0.0, 15.0, 0.0);
- layout.headerReferenceSize = CGSizeMake(bounds.size.width, 60.0);
- layout.footerReferenceSize = CGSizeMake(bounds.size.width, 60.0);
- ViewController *mainController = [[ViewController alloc] initWithLayout:layout andDataStack:self.dataStack];
- UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainController];
+ OptionsController *controller = [[OptionsController alloc] initWithDataStack:self.dataStack];
+ controller.title = @"Options";
+ UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
diff --git a/TableObjC/ViewController.h b/ObjectiveCDemo/TableViewController/TableViewController.h
similarity index 64%
rename from TableObjC/ViewController.h
rename to ObjectiveCDemo/TableViewController/TableViewController.h
index 05a48c7..e8da938 100755
--- a/TableObjC/ViewController.h
+++ b/ObjectiveCDemo/TableViewController/TableViewController.h
@@ -2,7 +2,7 @@
@class DATAStack;
-@interface ViewController : UITableViewController
+@interface TableViewController : UITableViewController
- (instancetype)initWithDataStack:(DATAStack *)dataStack;
diff --git a/ObjectiveCDemo/TableViewController/TableViewController.m b/ObjectiveCDemo/TableViewController/TableViewController.m
new file mode 100755
index 0000000..2143e27
--- /dev/null
+++ b/ObjectiveCDemo/TableViewController/TableViewController.m
@@ -0,0 +1,64 @@
+#import "TableViewController.h"
+
+@import DATAStack;
+@import CoreData;
+
+#import "ObjectiveCDemo-Swift.h"
+
+
+static NSString *CellIdentifier = @"CellIdentifier";
+
+@interface TableViewController ()
+
+@property (nonatomic, weak) DATAStack *dataStack;
+@property (nonatomic) DATASource *dataSource;
+
+@end
+
+@implementation TableViewController
+
+- (instancetype)initWithDataStack:(DATAStack *)dataStack {
+ self = [super initWithStyle:UITableViewStylePlain];
+ if (self) {
+ _dataStack = dataStack;
+ }
+
+ return self;
+}
+
+- (DATASource *)dataSource {
+ if (!_dataSource) {
+ NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"User"];
+ request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
+
+ _dataSource = [[DATASource alloc] initWithTableView:self.tableView
+ cellIdentifier:CellIdentifier
+ fetchRequest:request
+ mainContext:self.dataStack.mainContext
+ sectionName:nil
+ configuration:^(UITableViewCell * _Nonnull cell, NSManagedObject * _Nonnull item, NSIndexPath * _Nonnull indexPath) {
+ cell.textLabel.text = [item valueForKey:@"name"];
+ }];
+ }
+
+ return _dataSource;
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];
+
+ self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction)];
+
+ self.tableView.dataSource = self.dataSource;
+
+ NSManagedObject *object = [self.dataSource objectAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
+ NSLog(@"object: %@", object);
+}
+
+- (void)addAction {
+ [Helper addNewUserWithDataStack:self.dataStack];
+}
+
+@end
diff --git a/ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.h b/ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.h
new file mode 100644
index 0000000..36af505
--- /dev/null
+++ b/ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.h
@@ -0,0 +1,10 @@
+@import UIKit;
+
+@class DATAStack;
+
+@interface TableViewControllerWithSections : UITableViewController
+
+- (instancetype)initWithDataStack:(DATAStack *)dataStack;
+
+@end
+
diff --git a/TableObjC/ViewController.m b/ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.m
old mode 100755
new mode 100644
similarity index 58%
rename from TableObjC/ViewController.m
rename to ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.m
index 49235e9..f68e9a9
--- a/TableObjC/ViewController.m
+++ b/ObjectiveCDemo/TableViewControllerWithSections/TableViewControllerWithSections.m
@@ -1,19 +1,21 @@
-#import "ViewController.h"
+#import "TableViewControllerWithSections.h"
@import DATAStack;
@import CoreData;
-#import "TableObjC-Swift.h"
+
+#import "ObjectiveCDemo-Swift.h"
+
static NSString *CellIdentifier = @"CellIdentifier";
-@interface ViewController ()
+@interface TableViewControllerWithSections ()
@property (nonatomic, weak) DATAStack *dataStack;
@property (nonatomic) DATASource *dataSource;
@end
-@implementation ViewController
+@implementation TableViewControllerWithSections
- (instancetype)initWithDataStack:(DATAStack *)dataStack {
self = [super initWithStyle:UITableViewStylePlain];
@@ -27,8 +29,8 @@ - (instancetype)initWithDataStack:(DATAStack *)dataStack {
- (DATASource *)dataSource {
if (!_dataSource) {
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"User"];
- request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name"
- ascending:YES]];
+ request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"firstLetterOfName" ascending:YES],
+ [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
_dataSource = [[DATASource alloc] initWithTableView:self.tableView
cellIdentifier:CellIdentifier
@@ -57,30 +59,7 @@ - (void)viewDidLoad {
}
- (void)addAction {
- [self.dataStack performInNewBackgroundContext:^(NSManagedObjectContext *backgroundContext) {
- NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
- inManagedObjectContext:backgroundContext];
- NSManagedObject *user = [[NSManagedObject alloc] initWithEntity:entity
- insertIntoManagedObjectContext:backgroundContext];
- NSString *name = [self randomString];
- NSString *firstLetter = [[name substringToIndex:1] uppercaseString];
- [user setValue:name forKey:@"name"];
- [user setValue:firstLetter forKey:@"firstLetterOfName"];
- [backgroundContext save:nil];
- }];
-}
-
-- (NSString *)randomString {
- NSString *letters = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-
- NSMutableString *randomString = [NSMutableString stringWithCapacity:10];
-
- for (int i = 0; i < 10; i++) {
- u_int32_t rnd = (u_int32_t)[letters length];
- [randomString appendFormat: @"%C", [letters characterAtIndex:arc4random_uniform(rnd)]];
- }
-
- return randomString;
+ [Helper addNewUserWithDataStack:self.dataStack];
}
@end
diff --git a/TableObjC/main.m b/ObjectiveCDemo/main.m
similarity index 88%
rename from TableObjC/main.m
rename to ObjectiveCDemo/main.m
index 81e84cb..1db1e5c 100644
--- a/TableObjC/main.m
+++ b/ObjectiveCDemo/main.m
@@ -1,4 +1,4 @@
-#import
+@import UIKit;
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
diff --git a/CollectionObjC/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from CollectionObjC/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to SwiftDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/DATASourceDelegateTableSwift/Base.lproj/LaunchScreen.storyboard b/SwiftDemo/Base.lproj/LaunchScreen.storyboard
similarity index 70%
rename from DATASourceDelegateTableSwift/Base.lproj/LaunchScreen.storyboard
rename to SwiftDemo/Base.lproj/LaunchScreen.storyboard
index 2e721e1..fdf3f97 100644
--- a/DATASourceDelegateTableSwift/Base.lproj/LaunchScreen.storyboard
+++ b/SwiftDemo/Base.lproj/LaunchScreen.storyboard
@@ -1,7 +1,8 @@
-
+
-
+
+
@@ -13,10 +14,9 @@
-
+
-
-
+
diff --git a/SwiftDemo/CollectionViewController/CollectionViewController.swift b/SwiftDemo/CollectionViewController/CollectionViewController.swift
new file mode 100644
index 0000000..203cfa8
--- /dev/null
+++ b/SwiftDemo/CollectionViewController/CollectionViewController.swift
@@ -0,0 +1,51 @@
+import UIKit
+
+import DATAStack
+import CoreData
+
+class CollectionViewController: UICollectionViewController {
+ let dataStack: DATAStack
+
+ lazy var dataSource: DATASource = {
+ guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
+
+ let request: NSFetchRequest = NSFetchRequest(entityName: "User")
+ request.sortDescriptors = [
+ NSSortDescriptor(key: "name", ascending: true),
+ ]
+
+ let dataSource = DATASource(collectionView: collectionView, cellIdentifier: CollectionCell.Identifier, fetchRequest: request, mainContext: self.dataStack.mainContext, configuration: { cell, item, indexPath in
+ let collectionCell = cell as! CollectionCell
+ collectionCell.textLabel.text = item.value(forKey: "name") as? String
+ })
+
+ return dataSource
+ }()
+
+ init(layout: UICollectionViewLayout, dataStack: DATAStack) {
+ self.dataStack = dataStack
+
+ super.init(collectionViewLayout: layout)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
+
+ collectionView.register(CollectionCell.self, forCellWithReuseIdentifier: CollectionCell.Identifier)
+ collectionView.dataSource = self.dataSource
+ collectionView.backgroundColor = UIColor.white
+ collectionView.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
+
+ self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(CollectionViewController.saveAction))
+ }
+
+ func saveAction() {
+ Helper.addNewUser(dataStack: self.dataStack)
+ }
+}
diff --git a/SwiftDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.swift b/SwiftDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.swift
new file mode 100644
index 0000000..0eb89af
--- /dev/null
+++ b/SwiftDemo/CollectionViewControllerWithSections/CollectionViewControllerWithSections.swift
@@ -0,0 +1,52 @@
+import UIKit
+
+import DATAStack
+import CoreData
+
+class CollectionViewControllerWithSections: UICollectionViewController {
+ unowned let dataStack: DATAStack
+
+ lazy var dataSource: DATASource = {
+ guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
+
+ let request: NSFetchRequest = NSFetchRequest(entityName: "User")
+ request.sortDescriptors = [
+ NSSortDescriptor(key: "name", ascending: true),
+ NSSortDescriptor(key: "firstLetterOfName", ascending: true),
+ ]
+
+ let dataSource = DATASource(collectionView: collectionView, cellIdentifier: CollectionCell.Identifier, fetchRequest: request, mainContext: self.dataStack.mainContext, sectionName: "firstLetterOfName", configuration: { cell, item, indexPath in
+ let collectionCell = cell as! CollectionCell
+ collectionCell.textLabel.text = item.value(forKey: "name") as? String
+ })
+
+ return dataSource
+ }()
+
+ init(layout: UICollectionViewLayout, dataStack: DATAStack) {
+ self.dataStack = dataStack
+
+ super.init(collectionViewLayout: layout)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ guard let collectionView = self.collectionView else { fatalError("CollectionView is nil") }
+
+ collectionView.register(CollectionCell.self, forCellWithReuseIdentifier: CollectionCell.Identifier)
+ collectionView.dataSource = self.dataSource
+ collectionView.backgroundColor = UIColor.white
+ collectionView.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
+
+ self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(CollectionViewController.saveAction))
+ }
+
+ func saveAction() {
+ Helper.addNewUser(dataStack: self.dataStack)
+ }
+}
diff --git a/DATASourceDelegateTableSwift/Info.plist b/SwiftDemo/Info.plist
similarity index 84%
rename from DATASourceDelegateTableSwift/Info.plist
rename to SwiftDemo/Info.plist
index d39a4da..392d758 100644
--- a/DATASourceDelegateTableSwift/Info.plist
+++ b/SwiftDemo/Info.plist
@@ -16,8 +16,6 @@
APPL
CFBundleShortVersionString
1.0
- CFBundleSignature
- ????
CFBundleVersion
1
LSRequiresIPhoneOS
@@ -28,6 +26,16 @@
armv7
+ UIStatusBarTintParameters
+
+ UINavigationBar
+
+ Style
+ UIBarStyleDefault
+ Translucent
+
+
+
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
diff --git a/SwiftDemo/Options/OptionsController.swift b/SwiftDemo/Options/OptionsController.swift
new file mode 100644
index 0000000..1e62988
--- /dev/null
+++ b/SwiftDemo/Options/OptionsController.swift
@@ -0,0 +1,77 @@
+import UIKit
+
+import DATAStack
+
+class OptionsController: UITableViewController {
+ let dataStack: DATAStack
+
+ init(dataStack: DATAStack) {
+ self.dataStack = dataStack
+
+ super.init(style: .plain)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
+ }
+
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return 5
+ }
+
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
+ cell.accessoryType = .disclosureIndicator
+
+ switch indexPath.row {
+ case 0:
+ cell.textLabel?.text = "CollectionViewController"
+ case 1:
+ cell.textLabel?.text = "CollectionViewControllerWithSections"
+ case 2:
+ cell.textLabel?.text = "TableViewController"
+ case 3:
+ cell.textLabel?.text = "TableViewControllerWithSections"
+ case 4:
+ cell.textLabel?.text = "TableViewControllerWithSectionsWithoutIndex"
+ default: break
+ }
+
+ return cell
+ }
+
+ override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ switch indexPath.row {
+ case 0:
+ let layout = UICollectionViewFlowLayout()
+ layout.itemSize = CGSize(width: 120, height: 120)
+ layout.sectionInset = UIEdgeInsets(top: 15, left: 0, bottom: 15, right: 0)
+ let controller = CollectionViewController(layout: layout, dataStack: self.dataStack)
+ self.navigationController?.pushViewController(controller, animated: true)
+ case 1:
+ let bounds = UIScreen.main.bounds
+ let layout = UICollectionViewFlowLayout()
+ layout.itemSize = CGSize(width: 120, height: 120)
+ layout.sectionInset = UIEdgeInsets(top: 15, left: 0, bottom: 15, right: 0)
+ layout.headerReferenceSize = CGSize(width: bounds.size.width, height: 60)
+ let controller = CollectionViewControllerWithSections(layout: layout, dataStack: self.dataStack)
+ self.navigationController?.pushViewController(controller, animated: true)
+ case 2:
+ let controller = TableViewController(dataStack: self.dataStack)
+ self.navigationController?.pushViewController(controller, animated: true)
+ case 3:
+ let controller = TableViewControllerWithSections(dataStack: self.dataStack)
+ self.navigationController?.pushViewController(controller, animated: true)
+ case 4:
+ let controller = TableViewControllerWithSectionsWithoutIndex(dataStack: self.dataStack)
+ self.navigationController?.pushViewController(controller, animated: true)
+ default: break
+ }
+ }
+}
diff --git a/TableSwift/AppDelegate.swift b/SwiftDemo/Root/AppDelegate.swift
old mode 100755
new mode 100644
similarity index 87%
rename from TableSwift/AppDelegate.swift
rename to SwiftDemo/Root/AppDelegate.swift
index c0cb585..0488624
--- a/TableSwift/AppDelegate.swift
+++ b/SwiftDemo/Root/AppDelegate.swift
@@ -19,8 +19,8 @@ extension AppDelegate: UIApplicationDelegate {
self.window = UIWindow(frame: UIScreen.main.bounds)
guard let window = self.window else { fatalError("Window not found") }
- let viewController = ViewController(dataStack: self.dataStack)
- window.rootViewController = UINavigationController(rootViewController: viewController)
+ let controller = OptionsController(dataStack: self.dataStack)
+ window.rootViewController = UINavigationController(rootViewController: controller)
window.makeKeyAndVisible()
return true
diff --git a/SwiftDemo/TableViewController/TableViewController.swift b/SwiftDemo/TableViewController/TableViewController.swift
new file mode 100644
index 0000000..70a8d02
--- /dev/null
+++ b/SwiftDemo/TableViewController/TableViewController.swift
@@ -0,0 +1,51 @@
+import UIKit
+import DATAStack
+import CoreData
+
+class TableViewController: UITableViewController {
+ unowned let dataStack: DATAStack
+
+ lazy var dataSource: DATASource = {
+ let request: NSFetchRequest = NSFetchRequest(entityName: "User")
+ request.sortDescriptors = [
+ NSSortDescriptor(key: "name", ascending: true),
+ ]
+
+ let dataSource = DATASource(tableView: self.tableView, cellIdentifier: "Cell", fetchRequest: request, mainContext: self.dataStack.mainContext)
+ dataSource.delegate = self
+
+ return dataSource
+ }()
+
+ init(dataStack: DATAStack) {
+ self.dataStack = dataStack
+
+ super.init(style: .plain)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
+ self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(TableViewController.saveAction))
+ self.tableView.dataSource = self.dataSource
+
+ let object = self.dataSource.objectAtIndexPath(IndexPath(row: 0, section: 0))
+ print(object)
+ }
+
+ func saveAction() {
+ Helper.addNewUser(dataStack: self.dataStack)
+ }
+}
+
+extension TableViewController: DATASourceDelegate {
+
+ func dataSource(_ dataSource: DATASource, configureTableViewCell cell: UITableViewCell, withItem item: NSManagedObject, atIndexPath indexPath: IndexPath) {
+ cell.textLabel?.text = item.value(forKey: "name") as? String ?? ""
+ }
+}
diff --git a/SwiftDemo/TableViewControllerWithSections/TableViewControllerWithSections.swift b/SwiftDemo/TableViewControllerWithSections/TableViewControllerWithSections.swift
new file mode 100644
index 0000000..f6dadbf
--- /dev/null
+++ b/SwiftDemo/TableViewControllerWithSections/TableViewControllerWithSections.swift
@@ -0,0 +1,53 @@
+import UIKit
+import DATAStack
+import CoreData
+
+class TableViewControllerWithSections: UITableViewController {
+ unowned let dataStack: DATAStack
+
+ lazy var dataSource: DATASource = {
+ let request: NSFetchRequest = NSFetchRequest(entityName: "User")
+ request.sortDescriptors = [
+ NSSortDescriptor(key: "firstLetterOfName", ascending: true),
+ NSSortDescriptor(key: "count", ascending: true),
+ NSSortDescriptor(key: "name", ascending: true),
+ ]
+
+ let dataSource = DATASource(tableView: self.tableView, cellIdentifier: "Cell", fetchRequest: request, mainContext: self.dataStack.mainContext, sectionName: "firstLetterOfName")
+ dataSource.delegate = self
+
+ return dataSource
+ }()
+
+ init(dataStack: DATAStack) {
+ self.dataStack = dataStack
+
+ super.init(style: .plain)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
+ self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(TableViewController.saveAction))
+ self.tableView.dataSource = self.dataSource
+
+ let object = self.dataSource.objectAtIndexPath(IndexPath(row: 0, section: 0))
+ print(object)
+ }
+
+ func saveAction() {
+ Helper.addNewUser(dataStack: self.dataStack)
+ }
+}
+
+extension TableViewControllerWithSections: DATASourceDelegate {
+
+ func dataSource(_ dataSource: DATASource, configureTableViewCell cell: UITableViewCell, withItem item: NSManagedObject, atIndexPath indexPath: IndexPath) {
+ cell.textLabel?.text = item.value(forKey: "name") as? String ?? ""
+ }
+}
diff --git a/SwiftDemo/TableViewControllerWithSectionsWithoutIndex/TableViewControllerWithSectionsWithoutIndex.swift b/SwiftDemo/TableViewControllerWithSectionsWithoutIndex/TableViewControllerWithSectionsWithoutIndex.swift
new file mode 100644
index 0000000..93cd43d
--- /dev/null
+++ b/SwiftDemo/TableViewControllerWithSectionsWithoutIndex/TableViewControllerWithSectionsWithoutIndex.swift
@@ -0,0 +1,57 @@
+import UIKit
+import DATAStack
+import CoreData
+
+class TableViewControllerWithSectionsWithoutIndex: UITableViewController {
+ unowned let dataStack: DATAStack
+
+ lazy var dataSource: DATASource = {
+ let request: NSFetchRequest = NSFetchRequest(entityName: "User")
+ request.sortDescriptors = [
+ NSSortDescriptor(key: "firstLetterOfName", ascending: true),
+ NSSortDescriptor(key: "count", ascending: true),
+ NSSortDescriptor(key: "name", ascending: true),
+ ]
+
+ let dataSource = DATASource(tableView: self.tableView, cellIdentifier: "Cell", fetchRequest: request, mainContext: self.dataStack.mainContext, sectionName: "firstLetterOfName")
+ dataSource.delegate = self
+
+ return dataSource
+ }()
+
+ init(dataStack: DATAStack) {
+ self.dataStack = dataStack
+
+ super.init(style: .plain)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
+ self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(TableViewController.saveAction))
+ self.tableView.dataSource = self.dataSource
+
+ let object = self.dataSource.objectAtIndexPath(IndexPath(row: 0, section: 0))
+ print(object)
+ }
+
+ func saveAction() {
+ Helper.addNewUser(dataStack: self.dataStack)
+ }
+}
+
+extension TableViewControllerWithSectionsWithoutIndex: DATASourceDelegate {
+
+ func dataSource(_ dataSource: DATASource, configureTableViewCell cell: UITableViewCell, withItem item: NSManagedObject, atIndexPath indexPath: IndexPath) {
+ cell.textLabel?.text = item.value(forKey: "name") as? String ?? ""
+ }
+
+ func sectionIndexTitlesForDataSource(_ dataSource: DATASource, tableView: UITableView) -> [String] {
+ return [String]()
+ }
+}
diff --git a/TableObjC/AppDelegate.h b/TableObjC/AppDelegate.h
deleted file mode 100755
index 4c69912..0000000
--- a/TableObjC/AppDelegate.h
+++ /dev/null
@@ -1,8 +0,0 @@
-@import UIKit;
-@import CoreData;
-
-@interface AppDelegate : UIResponder
-
-@property (strong, nonatomic) UIWindow *window;
-
-@end
diff --git a/TableObjC/AppDelegate.m b/TableObjC/AppDelegate.m
deleted file mode 100755
index 761a470..0000000
--- a/TableObjC/AppDelegate.m
+++ /dev/null
@@ -1,26 +0,0 @@
-#import "AppDelegate.h"
-#import "ViewController.h"
-@import DATAStack;
-
-@interface AppDelegate ()
-
-@property (nonatomic) DATAStack *dataStack;
-
-@end
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
-
- self.dataStack = [[DATAStack alloc] initWithModelName:@"DataModel"];
- ViewController *mainController = [[ViewController alloc] initWithDataStack:self.dataStack];
- UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainController];
- self.window.rootViewController = navigationController;
- [self.window makeKeyAndVisible];
-
- return YES;
-}
-
-@end
-
diff --git a/TableObjC/Assets.xcassets/AppIcon.appiconset/Contents.json b/TableObjC/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 118c98f..0000000
--- a/TableObjC/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/TableObjC/Base.lproj/LaunchScreen.storyboard b/TableObjC/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 2e721e1..0000000
--- a/TableObjC/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/TableObjC/Info.plist b/TableObjC/Info.plist
deleted file mode 100644
index d39a4da..0000000
--- a/TableObjC/Info.plist
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/TableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json b/TableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 118c98f..0000000
--- a/TableSwift/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/TableSwift/Base.lproj/LaunchScreen.storyboard b/TableSwift/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 2e721e1..0000000
--- a/TableSwift/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/TableSwift/CustomCell.swift b/TableSwift/CustomCell.swift
deleted file mode 100644
index a005549..0000000
--- a/TableSwift/CustomCell.swift
+++ /dev/null
@@ -1,28 +0,0 @@
-import UIKit
-
-class CustomCell: UITableViewCell {
- static let Identifier = "CustomCellIdentifier"
-
- lazy var label: UILabel = {
- let label = UILabel(frame: CGRect.zero)
- label.textAlignment = .center
-
- return label
- }()
-
- override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
- super.init(style: style, reuseIdentifier: reuseIdentifier)
-
- self.contentView.addSubview(self.label)
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func layoutSubviews() {
- super.layoutSubviews()
-
- self.label.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height)
- }
-}
diff --git a/TableSwift/Info.plist b/TableSwift/Info.plist
deleted file mode 100644
index d39a4da..0000000
--- a/TableSwift/Info.plist
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/TableSwift/ViewController.swift b/TableSwift/ViewController.swift
deleted file mode 100644
index 002747b..0000000
--- a/TableSwift/ViewController.swift
+++ /dev/null
@@ -1,97 +0,0 @@
-import UIKit
-import DATAStack
-import CoreData
-
-class ViewController: UITableViewController {
- weak var dataStack: DATAStack?
-
- lazy var dataSource: DATASource = {
- let request: NSFetchRequest = NSFetchRequest(entityName: "User")
- request.sortDescriptors = [
- NSSortDescriptor(key: "firstLetterOfName", ascending: true),
- NSSortDescriptor(key: "count", ascending: true),
- NSSortDescriptor(key: "name", ascending: true),
- ]
-
- let dataSource = DATASource(tableView: self.tableView, cellIdentifier: CustomCell.Identifier, fetchRequest: request, mainContext: self.dataStack!.mainContext, sectionName: "firstLetterOfName")
- dataSource.delegate = self
-
- return dataSource
- }()
-
- convenience init(dataStack: DATAStack) {
- self.init(style: .plain)
-
- self.dataStack = dataStack
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- self.tableView.register(CustomCell.self, forCellReuseIdentifier: CustomCell.Identifier)
- self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(ViewController.saveAction))
- self.tableView.dataSource = self.dataSource
-
- let object = self.dataSource.objectAtIndexPath(IndexPath(row: 0, section: 0))
- print(object)
- }
-
- func saveAction() {
- self.dataStack!.performInNewBackgroundContext { backgroundContext in
- if let entity = NSEntityDescription.entity(forEntityName: "User", in: backgroundContext) {
- let user = NSManagedObject(entity: entity, insertInto: backgroundContext)
-
- let name = self.randomString()
- let firstLetter = String(name[name.startIndex])
- user.setValue(name, forKey: "name")
- user.setValue(firstLetter, forKey: "firstLetterOfName")
-
- do {
- try backgroundContext.save()
- } catch let savingError as NSError {
- print("Could not save \(savingError)")
- } catch {
- fatalError()
- }
- } else {
- print("Oh no")
- }
- }
- }
-
- func randomString() -> String {
- let letters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÅØÆ"
- var string = ""
- for _ in 0 ... 10 {
- let token = UInt32(letters.characters.count)
- let letterIndex = Int(arc4random_uniform(token))
- let firstChar = Array(letters.characters)[letterIndex]
- string.append(firstChar)
- }
-
- return string
- }
-
- override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- let user = self.dataSource.objectAtIndexPath(indexPath)
- self.dataStack?.performInNewBackgroundContext { backgroundContext in
- guard let objectID = user?.objectID else { fatalError() }
- let user = backgroundContext.object(with: objectID)
- var count = user.value(forKey: "count") as? Int ?? 0
- count += 1
- user.setValue(count, forKey: "count")
- try! backgroundContext.save()
- }
- }
-}
-
-extension ViewController: DATASourceDelegate {
-
- func dataSource(_ dataSource: DATASource, configureTableViewCell cell: UITableViewCell, withItem item: NSManagedObject, atIndexPath indexPath: IndexPath) {
- if let cell = cell as? CustomCell {
- let name = item.value(forKey: "name") as? String ?? ""
- let count = item.value(forKey: "count") as? Int ?? 0
- cell.label.text = "\(count) — \(name)"
- }
- }
-}