From 745b7d7ea40b06a2b99742f7ccf976d455cfa3b6 Mon Sep 17 00:00:00 2001 From: Pavan Kataria Date: Thu, 14 Jun 2018 13:54:19 +0100 Subject: [PATCH] Release --- .gitignore | 2 +- .swift-version | 2 +- .travis.yml | 0 CHANGELOG.md | 0 Example/CHANGELOG.md | 0 Example/Podfile | 0 Example/Podfile.lock | 6 +- .../SwiftDataTables.podspec.json | 4 +- Example/Pods/Manifest.lock | 8 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 800 +++++++++--------- ...Pods-SwiftDataTables_Example-frameworks.sh | 57 +- .../Pods-SwiftDataTables_Example-resources.sh | 18 +- ...ods-SwiftDataTables_Example.debug.xcconfig | 8 +- ...s-SwiftDataTables_Example.release.xcconfig | 8 +- .../Pods-SwiftDataTables_Tests-frameworks.sh | 57 +- .../Pods-SwiftDataTables_Tests-resources.sh | 18 +- .../Pods-SwiftDataTables_Tests.debug.xcconfig | 8 +- ...ods-SwiftDataTables_Tests.release.xcconfig | 8 +- .../SwiftDataTables/Info.plist | 2 +- .../SwiftDataTables/SwiftDataTables.xcconfig | 7 +- Example/SwiftDataTables-Preview.gif | Bin .../SwiftDataTables.xcodeproj/project.pbxproj | 109 +-- .../contents.xcworkspacedata | 0 .../SwiftDataTables-Example.xcscheme | 4 +- .../contents.xcworkspacedata | 0 Example/SwiftDataTables/AppDelegate.swift | 14 +- .../Base.lproj/LaunchScreen.xib | 0 .../Base.lproj/Main.storyboard | 132 --- ...ataTableWithDataSourceViewController.swift | 0 Example/SwiftDataTables/File.swift | 0 .../AppIcon.appiconset/Contents.json | 17 +- Example/SwiftDataTables/Info.plist | 2 - .../MenuTableViewController.swift | 2 +- .../SwiftDataTables_Example-Bridging-Header.h | 0 Example/SwiftDataTables/ViewController.swift | 72 -- Example/Tests/Info.plist | 0 Example/Tests/Tests.swift | 0 LICENSE | 0 README.md | 45 +- SwiftDataTables.podspec | 5 +- .../Classes/DataCell/DataCell.swift | 1 + SwiftDataTables/Classes/DataCell/DataCell.xib | 0 .../DataCell/DataCellLayoutAttributes.swift | 0 .../Classes/DataCell/DataCellViewModel.swift | 0 SwiftDataTables/Classes/DataStore.swift | 0 .../Classes/DataStructureModel.swift | 4 +- .../Classes/DataTableConfiguration.swift | 1 + .../Classes/DataTableSearchTextField.swift | 0 .../Classes/DataTableSortType.swift | 0 .../Classes/DataTableSortable.swift | 0 .../Classes/DataTableValueType.swift | 0 .../SwiftDataTable+Extensions.swift | 2 +- .../HeaderFooter/DataHeaderFooter.swift | 10 +- .../Classes/HeaderFooter/DataHeaderFooter.xib | 0 .../DataHeaderFooterViewModel.swift | 0 .../MenuLengthHeader/MenuLengthHeader.swift | 0 .../MenuLengthHeader/MenuLengthHeader.xib | 0 .../MenuLengthHeaderViewModel.swift | 0 .../PaginationHeader/PaginationHeader.swift | 0 .../PaginationHeader/PaginationHeader.xib | 0 .../PaginationHeaderViewModel.swift | 0 .../CollectionViewCellRepresentable.swift | 0 ...iewSupplementaryElementRepresentable.swift | 0 .../Protocols/DataCellRowRepresentable.swift | 0 .../Protocols/VirtualPositionTrackable.swift | 0 SwiftDataTables/Classes/SwiftDataTable.swift | 21 +- .../Classes/SwiftDataTableFlowLayout.swift | 344 -------- .../column-sort-ascending.png | Bin .../column-sort-descending.png | Bin .../column-sort-unspecified.png | Bin 70 files changed, 659 insertions(+), 1139 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .travis.yml mode change 100644 => 100755 CHANGELOG.md mode change 100644 => 100755 Example/CHANGELOG.md mode change 100644 => 100755 Example/Podfile mode change 100644 => 100755 Example/Podfile.lock mode change 100755 => 100644 Example/Pods/Pods.xcodeproj/project.pbxproj mode change 100755 => 100644 Example/Pods/Target Support Files/SwiftDataTables/Info.plist mode change 100755 => 100644 Example/Pods/Target Support Files/SwiftDataTables/SwiftDataTables.xcconfig mode change 100644 => 100755 Example/SwiftDataTables-Preview.gif mode change 100644 => 100755 Example/SwiftDataTables.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 Example/SwiftDataTables.xcodeproj/xcshareddata/xcschemes/SwiftDataTables-Example.xcscheme mode change 100644 => 100755 Example/SwiftDataTables.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 Example/SwiftDataTables/AppDelegate.swift mode change 100644 => 100755 Example/SwiftDataTables/Base.lproj/LaunchScreen.xib delete mode 100644 Example/SwiftDataTables/Base.lproj/Main.storyboard mode change 100644 => 100755 Example/SwiftDataTables/DataTableWithDataSourceViewController.swift mode change 100644 => 100755 Example/SwiftDataTables/File.swift mode change 100644 => 100755 Example/SwiftDataTables/Images.xcassets/AppIcon.appiconset/Contents.json mode change 100644 => 100755 Example/SwiftDataTables/Info.plist mode change 100644 => 100755 Example/SwiftDataTables/SwiftDataTables_Example-Bridging-Header.h delete mode 100644 Example/SwiftDataTables/ViewController.swift mode change 100644 => 100755 Example/Tests/Info.plist mode change 100644 => 100755 Example/Tests/Tests.swift mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 SwiftDataTables.podspec mode change 100644 => 100755 SwiftDataTables/Classes/DataCell/DataCell.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataCell/DataCell.xib mode change 100644 => 100755 SwiftDataTables/Classes/DataCell/DataCellLayoutAttributes.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataCell/DataCellViewModel.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataStore.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataStructureModel.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataTableConfiguration.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataTableSearchTextField.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataTableSortType.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataTableSortable.swift mode change 100644 => 100755 SwiftDataTables/Classes/DataTableValueType.swift mode change 100644 => 100755 SwiftDataTables/Classes/Extensions/SwiftDataTable+Extensions.swift mode change 100644 => 100755 SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.swift mode change 100644 => 100755 SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.xib mode change 100644 => 100755 SwiftDataTables/Classes/HeaderFooter/DataHeaderFooterViewModel.swift mode change 100644 => 100755 SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeader.swift mode change 100644 => 100755 SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeader.xib mode change 100644 => 100755 SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeaderViewModel.swift mode change 100644 => 100755 SwiftDataTables/Classes/PaginationHeader/PaginationHeader.swift mode change 100644 => 100755 SwiftDataTables/Classes/PaginationHeader/PaginationHeader.xib mode change 100644 => 100755 SwiftDataTables/Classes/PaginationHeader/PaginationHeaderViewModel.swift mode change 100644 => 100755 SwiftDataTables/Classes/Protocols/CollectionViewCellRepresentable.swift mode change 100644 => 100755 SwiftDataTables/Classes/Protocols/CollectionViewSupplementaryElementRepresentable.swift mode change 100644 => 100755 SwiftDataTables/Classes/Protocols/DataCellRowRepresentable.swift mode change 100644 => 100755 SwiftDataTables/Classes/Protocols/VirtualPositionTrackable.swift mode change 100644 => 100755 SwiftDataTables/Classes/SwiftDataTable.swift delete mode 100644 SwiftDataTables/Classes/SwiftDataTableFlowLayout.swift mode change 100644 => 100755 SwiftDataTables/SwiftDataTables.bundle/column-sort-ascending.png mode change 100644 => 100755 SwiftDataTables/SwiftDataTables.bundle/column-sort-descending.png mode change 100644 => 100755 SwiftDataTables/SwiftDataTables.bundle/column-sort-unspecified.png diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index a119ed5..e7b722d --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,4 @@ Carthage # Note: if you ignore the Pods directory, make sure to uncomment # `pod install` in .travis.yml # -Pods/ +# Pods/ diff --git a/.swift-version b/.swift-version index 5186d07..7d5c902 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.0 +4.1 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/CHANGELOG.md b/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/Example/CHANGELOG.md b/Example/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/Example/Podfile b/Example/Podfile old mode 100644 new mode 100755 diff --git a/Example/Podfile.lock b/Example/Podfile.lock old mode 100644 new mode 100755 index 2d8aad2..8821897 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - SwiftDataTables (0.5.3) + - SwiftDataTables (0.6.0) DEPENDENCIES: - SwiftDataTables (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - SwiftDataTables: 4d8361a5b6abff530e1f186eaa5853c330e28dcf + SwiftDataTables: efdcde549ee7447542d153f1c9e901be43946077 PODFILE CHECKSUM: 117ac710a88fe801ecac2a925baa29b1107fef2e -COCOAPODS: 1.2.0 +COCOAPODS: 1.5.0 diff --git a/Example/Pods/Local Podspecs/SwiftDataTables.podspec.json b/Example/Pods/Local Podspecs/SwiftDataTables.podspec.json index f810eb5..1b9b29b 100755 --- a/Example/Pods/Local Podspecs/SwiftDataTables.podspec.json +++ b/Example/Pods/Local Podspecs/SwiftDataTables.podspec.json @@ -1,6 +1,6 @@ { "name": "SwiftDataTables", - "version": "0.5.3", + "version": "0.6.0", "summary": "A Swift Data Table package that allows ordering, searching, and paging with extensible options.", "description": "SwiftDataTables allows you to display grid-like data sets in a nicely formatted table for iOS. The main goal for the end-user are to be able to obtain useful information from the table as quickly as possible with the following features: ordering, searching, and paging; where as for the developer is to allow for easy implementation with extensible options. This package was inspired by Javascript's DataTables package.", "homepage": "https://github.com/pavankataria/SwiftDataTables", @@ -13,7 +13,7 @@ }, "source": { "git": "https://github.com/pavankataria/SwiftDataTables.git", - "tag": "0.5.3" + "tag": "0.6.0" }, "platforms": { "ios": "8.0" diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 6f441e9..8821897 100755 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,16 +1,16 @@ PODS: - - SwiftDataTables (0.5.3) + - SwiftDataTables (0.6.0) DEPENDENCIES: - SwiftDataTables (from `../`) EXTERNAL SOURCES: SwiftDataTables: - :path: ../ + :path: "../" SPEC CHECKSUMS: - SwiftDataTables: 4d8361a5b6abff530e1f186eaa5853c330e28dcf + SwiftDataTables: efdcde549ee7447542d153f1c9e901be43946077 PODFILE CHECKSUM: 117ac710a88fe801ecac2a925baa29b1107fef2e -COCOAPODS: 1.3.1 +COCOAPODS: 1.5.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj old mode 100755 new mode 100644 index 9903d3a..7a0defe --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,46 +7,46 @@ objects = { /* Begin PBXBuildFile section */ - 031FBC727BE4D1D666B30200B90CBB68 /* DataCellRowRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FE72BE6169B142A0E009D060BDFB1F9 /* DataCellRowRepresentable.swift */; }; - 04E67A60A59D89EDD0FA3954807BACA2 /* Pods-SwiftDataTables_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 384C6C6A4148C520C98D0600D7393727 /* Pods-SwiftDataTables_Example-dummy.m */; }; - 052F6C7A88022A11EFA12C83A3A27C8C /* SwiftDataTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF7A08D7AAC7ED3073250FB264C31888 /* SwiftDataTable.swift */; }; - 0678BE3339C5759D29CA16B60B227E50 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; - 0CA82A50ECFAC3D58FCD89C156835FDD /* DataTableSortable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CFB39CA20F49AD0D69D1783F998A088 /* DataTableSortable.swift */; }; - 0F26306004341AD9FEE31748629DBB7B /* DataStructureModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3891027CF8EA96DF03B4AD26DE7771F2 /* DataStructureModel.swift */; }; - 13477E57A0D48F7D632943BFD4C32F9C /* DataTableSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F9F74A75FCEEBCEB1FCBF4CCAC05933 /* DataTableSearchTextField.swift */; }; - 13DC5749947421DFD00ECF07EDF28D52 /* SwiftDataTables-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AEBE0640FBAC21A77B84F863C096779 /* SwiftDataTables-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1E6050708BB90851544DD1982E0E8068 /* PaginationHeader.xib in Sources */ = {isa = PBXBuildFile; fileRef = 0A61CC27A515E5410E39AC1213C3335D /* PaginationHeader.xib */; }; - 201A03AB548D0FCC6C74991821E2A4EE /* DataCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5448D76AA0E2C4D91FEFA320DE1580C7 /* DataCellViewModel.swift */; }; - 23E1FF0A634F5873C0CE5152C7D64B2D /* column-sort-descending.png in Sources */ = {isa = PBXBuildFile; fileRef = 408D9D26AF5FC547E0B56DABA569BD6A /* column-sort-descending.png */; }; - 25AA98F7EF1F972D51683FAD5167404B /* CollectionViewCellRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C487D342698BF6153F627EF1CF4397D /* CollectionViewCellRepresentable.swift */; }; - 2FBD0B481310EAC7E945B7E6ADC2BD6B /* CollectionViewSupplementaryElementRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA787AC36180AF6531916069B681578F /* CollectionViewSupplementaryElementRepresentable.swift */; }; - 3BB91B74ACE68C5880CE7F647FE9A45A /* DataTableSortType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 417153628F679B310D45FF8821E47CB8 /* DataTableSortType.swift */; }; + 04E67A60A59D89EDD0FA3954807BACA2 /* Pods-SwiftDataTables_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0274511AB6D48D4832C759198CF2F0F /* Pods-SwiftDataTables_Example-dummy.m */; }; + 0A366C165119C06E9C9EF14E7407A310 /* CollectionViewCellRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03818016FD545D848DC97880DFE9BBF7 /* CollectionViewCellRepresentable.swift */; }; + 106723C461B568F00D34D44802AD0C4C /* DataHeaderFooter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB01557C8AFE419821D073B5742DB1EC /* DataHeaderFooter.swift */; }; + 13DC5749947421DFD00ECF07EDF28D52 /* SwiftDataTables-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DE8176B86431756F2F92E00922401BB /* SwiftDataTables-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1514A045F41B816A4D6E0244784901A2 /* column-sort-unspecified.png in Sources */ = {isa = PBXBuildFile; fileRef = 01BFF23CBAAE9C98AFC18054BFACF879 /* column-sort-unspecified.png */; }; + 17C3B50AECB8E506D2E59649720D03C0 /* DataCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA009DF036DC110C2397E03AA13F0861 /* DataCell.swift */; }; + 1FD1B699A41B9285D8EFB84D402416DB /* DataTableSortType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAE26892B4072AADEAD7BED0911708B /* DataTableSortType.swift */; }; + 225D1EBE021CD09C926D7BE984AB77BE /* column-sort-ascending.png in Sources */ = {isa = PBXBuildFile; fileRef = 47B90F53BE0DB04D3E3E9255BE3B40DF /* column-sort-ascending.png */; }; + 234923797075065284E325648A9B13E7 /* DataStructureModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C912BC525E602CC17AA6B442DC0EBB1 /* DataStructureModel.swift */; }; + 2BEA49AD6AF01B9706C46E0D43138A43 /* PaginationHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 153E0ED2126D8B1E2B8D7144426909EB /* PaginationHeader.swift */; }; + 2EA81963810325E602CE90B449C81F1F /* DataHeaderFooter.xib in Sources */ = {isa = PBXBuildFile; fileRef = 2B488E0C011C7E288A45DF10DD4B4C86 /* DataHeaderFooter.xib */; }; + 2FAC4B0AFEA58C006044FB9A3943582F /* SwiftDataTable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABFB4EFD59B672442DE9C8ED4BB708D4 /* SwiftDataTable+Extensions.swift */; }; + 458EB83FAAE600BAE5A5CAF5EE0056D6 /* Pods-SwiftDataTables_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0891CE13983D816CD5BC854D9BF86988 /* Pods-SwiftDataTables_Tests-dummy.m */; }; + 45C73B36FBB72D7BE23A7C92BB4A7232 /* CollectionViewSupplementaryElementRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD6A75B26194543191DBC7D98F1482E /* CollectionViewSupplementaryElementRepresentable.swift */; }; 46A8AF3D1F795645EEB75340B8476CFE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; - 4C0CCCBA6A0BDE6D26DCF38BF8AB5F47 /* MenuLengthHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7803F75FAAC2B457AAC1B6CCAB00501 /* MenuLengthHeaderViewModel.swift */; }; - 5591C3B097F7F357A07A2210DC427B78 /* VirtualPositionTrackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20194A9F58CA748CA4D6336CFA20F1D5 /* VirtualPositionTrackable.swift */; }; - 5C6A4AF70D01EE4EE6579C5F5B01718F /* SwiftDataTables-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BB4B69683AD40BBC9E00A909F24170 /* SwiftDataTables-dummy.m */; }; - 687712BFB353D8BDC08E7CE1F089A761 /* Pods-SwiftDataTables_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5277C1C4F649828D9CEE62AF4D307B53 /* Pods-SwiftDataTables_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69CDB64EB9B9225B0CB08B3E345DC3E2 /* PaginationHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = E47AB0B7F0FAA68C628DB4D10A767208 /* PaginationHeader.swift */; }; - 73ED7945DE34869F021F0ABCDA39FD5D /* Pods-SwiftDataTables_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A4A7D10DFC80274683FA6D5D7CB30045 /* Pods-SwiftDataTables_Tests-dummy.m */; }; - 7745AEDB7DCE0BF64FC316EF01F5FDC8 /* DataHeaderFooter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFC5500E4090D0706D9FBF22DE714AE /* DataHeaderFooter.swift */; }; - 79135FB2CDAC3B0F85985478BF9E6C5E /* MenuLengthHeader.xib in Sources */ = {isa = PBXBuildFile; fileRef = 484A80B8C4086905506DC73494D1A1AC /* MenuLengthHeader.xib */; }; - 7B354B776644B60E3B662E0AE4503364 /* DataHeaderFooter.xib in Sources */ = {isa = PBXBuildFile; fileRef = C547268A847B0F6578BC43AA6035EDEB /* DataHeaderFooter.xib */; }; - 7B85D7F62EACA7E7914202CBD79E9045 /* SwiftDataTableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F1A9A781C2759AA09F67FF9E831E28C /* SwiftDataTableLayout.swift */; }; - 89CFE050739D961DE59C2351EA5D5C0D /* DataCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61A7F5AA106C24A4C324630AB3153A11 /* DataCell.swift */; }; - 93B72955935B8311011D312B70B29587 /* DataTableConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C513F8F7D3AF14B53395329CC1BC717 /* DataTableConfiguration.swift */; }; - 9BE7C5D14A7F34235DE1EDBD793FEFF9 /* column-sort-unspecified.png in Sources */ = {isa = PBXBuildFile; fileRef = 18F48F719F672BBE88946597FC085475 /* column-sort-unspecified.png */; }; - 9FFFE412250C4C1CB205AC82D400373E /* DataHeaderFooterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7849C22683C87EFCE483F963199F790 /* DataHeaderFooterViewModel.swift */; }; - A1A31487481989BB20B27665BE33A849 /* DataTableValueType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3A8D70412333ADCA0C556A37BBD2E9 /* DataTableValueType.swift */; }; - AADE9EDF7E65478F3AE383AD9965A79D /* column-sort-ascending.png in Sources */ = {isa = PBXBuildFile; fileRef = 9131FFD952A77A0A786CEC19863B82F1 /* column-sort-ascending.png */; }; - BD04BD22D99AD0D57BD28E0D3ECBE4F6 /* DataCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 0A0D6DF7F9E8BD382C49263C129AE2B0 /* DataCell.xib */; }; - C18134F7C0F58091AC9EA05ECEA44E6F /* Pods-SwiftDataTables_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CC4698961C3BFC187A9932973FDBA01 /* Pods-SwiftDataTables_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 480E1E82686594082B624019A06DE0C4 /* MenuLengthHeader.xib in Sources */ = {isa = PBXBuildFile; fileRef = 2359DBFADDD457665969A3FCA5C75502 /* MenuLengthHeader.xib */; }; + 64C85C9BFF4D6601EDD33E6D81D0DFD1 /* VirtualPositionTrackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92772B10D9B4283BA9C604A251AB28BC /* VirtualPositionTrackable.swift */; }; + 66485BD86F02676394AD34CA7564C8A6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; + 687712BFB353D8BDC08E7CE1F089A761 /* Pods-SwiftDataTables_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A92B59177E1DF2B6130012BE6A7C6D5 /* Pods-SwiftDataTables_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6CD3DE05D64D9B0720C9ACAA5623FE12 /* DataCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 66DDA1ACA44AD6643A0A7B42EE5822D0 /* DataCell.xib */; }; + 6E3C1C905389352DECB1B885CB334119 /* DataCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24963756EC0A128A598EC83A669671F1 /* DataCellViewModel.swift */; }; + 6FC6A99ADD72BC833005F348E45BA62C /* SwiftDataTableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB9D8A141074C381B59ED0AF6CBEDEDC /* SwiftDataTableLayout.swift */; }; + 84FE568F0F5263135796E905E44298FB /* DataTableSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A76DA30AAA6EEE39621F709A40F37F6 /* DataTableSearchTextField.swift */; }; + 8D1CD1843C4BAAFEBD75B7DC6D33AA30 /* DataTableValueType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB7F2BB8B9861A29D9BCCB148DB6B3D /* DataTableValueType.swift */; }; + A798906049F59D24EAAD9F54C2DE96CB /* PaginationHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 659696360C75F10788726B8FE00AE349 /* PaginationHeaderViewModel.swift */; }; + A94E24E22C63113E76CE1C203B87F646 /* DataHeaderFooterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E797638CED9BECB91015DFC7D50B3576 /* DataHeaderFooterViewModel.swift */; }; + B4480CF1CB890A1E5C6806199279ABA7 /* MenuLengthHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA983C79110032720422CFD5DF788526 /* MenuLengthHeaderViewModel.swift */; }; + C1964B7EA427806E76E6BABBF7CA63C3 /* DataTableConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0704756EA9FACFE8F3BB8D83FF9C9674 /* DataTableConfiguration.swift */; }; + C290DC4526B04C72DC3A5BA6E155D6A4 /* Pods-SwiftDataTables_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B1D4A2233302B0910BECEA617ED76814 /* Pods-SwiftDataTables_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; C2E790EBC650C4FBEE54985C6796FF44 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; - C5EA480EE9FFC4EBCE40E52B4441ABF9 /* PaginationHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2DFA4FB74F829DD41516A6055D34356 /* PaginationHeaderViewModel.swift */; }; - C6640C67E1DFCF79209C6EF99CF0BD97 /* DataCellLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D73D1CA090A45620F358543E012989 /* DataCellLayoutAttributes.swift */; }; - CB9DB5650E450DAF81B6537BEC7EE76C /* DataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B809DC64BDD532758D5941A35282CA /* DataStore.swift */; }; - D02F1040BF43FD32C367AEA80CD5C188 /* SwiftDataTables.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CB47419BD67308B44125C1E3E3083961 /* SwiftDataTables.bundle */; }; - E2578092167EADA6CA8B17659F388195 /* MenuLengthHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A5062BE86488A9A50643B1191BB1C2 /* MenuLengthHeader.swift */; }; - F9F8F33E84A48E91800182DBEF0A87FC /* SwiftDataTable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB6A085A60F2ABFD0A22B1D15214059B /* SwiftDataTable+Extensions.swift */; }; + C86E3153A3571BF3895D554AD002D53F /* MenuLengthHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBD1CFB40667142D724601CD2FBE8CF9 /* MenuLengthHeader.swift */; }; + CF51A3E69692A1CF42C5BF17E089EF2E /* DataTableSortable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C45E1F552464F8D59C3CBC10C2B7B203 /* DataTableSortable.swift */; }; + CF70F094F69FCEF9C8B50347FAAB1869 /* SwiftDataTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5C14E2346623FC5D24613AF4FFB744 /* SwiftDataTable.swift */; }; + D02F1040BF43FD32C367AEA80CD5C188 /* SwiftDataTables.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D374366BFB4EC6A67EC6C42782657CF2 /* SwiftDataTables.bundle */; }; + D0DCEEBB82775915EB4EED227637CF9B /* DataCellLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFA343BB874F4D48F055EEBCDE88E70E /* DataCellLayoutAttributes.swift */; }; + D8B83086C46AEC137B8FEFEDD91FEB5B /* DataCellRowRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F68D74FFC0506847D22981C8E40D51 /* DataCellRowRepresentable.swift */; }; + E08293F3963F1480E53ABE4812FDD949 /* column-sort-descending.png in Sources */ = {isa = PBXBuildFile; fileRef = 17B176CC63B21E9114BAD3ED05BF3D6D /* column-sort-descending.png */; }; + E6D2153007F7810D51C938950F740782 /* SwiftDataTables-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E5086C44CCD37CD57336EB951642ADB /* SwiftDataTables-dummy.m */; }; + E799ABA58B8821EA21F44959318389C2 /* DataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237BABF73FAE40F8CF30032EC3039E50 /* DataStore.swift */; }; + E97B38E2306D3B094ABBDCBDF8F3D433 /* PaginationHeader.xib in Sources */ = {isa = PBXBuildFile; fileRef = 182F85925B527EC2655C3BE6F101E0D1 /* PaginationHeader.xib */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -57,71 +57,81 @@ remoteGlobalIDString = E3CFE72A7C3BEAB4AFEA8B37BAF38809; remoteInfo = SwiftDataTables; }; + 2D9BE27AEC8C378758506E1AB9E98713 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 35A7856F4E4D9B71B975A5AF937288AB; + remoteInfo = "Pods-SwiftDataTables_Example"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 01D73D1CA090A45620F358543E012989 /* DataCellLayoutAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCellLayoutAttributes.swift; sourceTree = ""; }; - 026CC3068F40BE2D05647A2410B36B3B /* Pods-SwiftDataTables_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Tests-resources.sh"; sourceTree = ""; }; - 0A0D6DF7F9E8BD382C49263C129AE2B0 /* DataCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = DataCell.xib; sourceTree = ""; }; - 0A61CC27A515E5410E39AC1213C3335D /* PaginationHeader.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = PaginationHeader.xib; sourceTree = ""; }; - 0AEBE0640FBAC21A77B84F863C096779 /* SwiftDataTables-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftDataTables-umbrella.h"; sourceTree = ""; }; - 0CA35274C244CFCEABBF8BBA51585F9A /* SwiftDataTables.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftDataTables.xcconfig; sourceTree = ""; }; - 0F9F74A75FCEEBCEB1FCBF4CCAC05933 /* DataTableSearchTextField.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableSearchTextField.swift; sourceTree = ""; }; - 0FE72BE6169B142A0E009D060BDFB1F9 /* DataCellRowRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCellRowRepresentable.swift; sourceTree = ""; }; - 1037553484562CE309A3013538712A90 /* Pods_SwiftDataTables_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftDataTables_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 13BB4B69683AD40BBC9E00A909F24170 /* SwiftDataTables-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftDataTables-dummy.m"; sourceTree = ""; }; - 15D74D4F308C07A9FF50DFDA2A0736D9 /* Pods-SwiftDataTables_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwiftDataTables_Example.modulemap"; sourceTree = ""; }; - 18B3638F5AD13E6EBCB7FBA837D1D5AD /* Pods-SwiftDataTables_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftDataTables_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 18F48F719F672BBE88946597FC085475 /* column-sort-unspecified.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "column-sort-unspecified.png"; sourceTree = ""; }; - 1CFB39CA20F49AD0D69D1783F998A088 /* DataTableSortable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableSortable.swift; sourceTree = ""; }; - 20194A9F58CA748CA4D6336CFA20F1D5 /* VirtualPositionTrackable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VirtualPositionTrackable.swift; sourceTree = ""; }; - 2212E7284291A93CCF185B4B441B833B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2DFC5500E4090D0706D9FBF22DE714AE /* DataHeaderFooter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHeaderFooter.swift; sourceTree = ""; }; - 31A5062BE86488A9A50643B1191BB1C2 /* MenuLengthHeader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MenuLengthHeader.swift; sourceTree = ""; }; - 33462704076851C1B758B976F53B9A0C /* Pods-SwiftDataTables_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Example-frameworks.sh"; sourceTree = ""; }; - 384C6C6A4148C520C98D0600D7393727 /* Pods-SwiftDataTables_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftDataTables_Example-dummy.m"; sourceTree = ""; }; - 3891027CF8EA96DF03B4AD26DE7771F2 /* DataStructureModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataStructureModel.swift; sourceTree = ""; }; - 3CC4698961C3BFC187A9932973FDBA01 /* Pods-SwiftDataTables_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftDataTables_Tests-umbrella.h"; sourceTree = ""; }; - 3F1A9A781C2759AA09F67FF9E831E28C /* SwiftDataTableLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwiftDataTableLayout.swift; sourceTree = ""; }; - 3FCF927BF691F6711D8A34DA24DE0727 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 408D9D26AF5FC547E0B56DABA569BD6A /* column-sort-descending.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "column-sort-descending.png"; sourceTree = ""; }; - 417153628F679B310D45FF8821E47CB8 /* DataTableSortType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableSortType.swift; sourceTree = ""; }; - 484A80B8C4086905506DC73494D1A1AC /* MenuLengthHeader.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = MenuLengthHeader.xib; sourceTree = ""; }; - 4AF636A6C261B4B22000184FC87CE66A /* Pods-SwiftDataTables_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Example-resources.sh"; sourceTree = ""; }; - 4C0A5FB57FFFD4B5C20CE6DBE5E49E2C /* SwiftDataTables-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftDataTables-prefix.pch"; sourceTree = ""; }; - 5277C1C4F649828D9CEE62AF4D307B53 /* Pods-SwiftDataTables_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftDataTables_Example-umbrella.h"; sourceTree = ""; }; - 5448D76AA0E2C4D91FEFA320DE1580C7 /* DataCellViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCellViewModel.swift; sourceTree = ""; }; - 61A7F5AA106C24A4C324630AB3153A11 /* DataCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCell.swift; sourceTree = ""; }; + 01BFF23CBAAE9C98AFC18054BFACF879 /* column-sort-unspecified.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "column-sort-unspecified.png"; sourceTree = ""; }; + 03818016FD545D848DC97880DFE9BBF7 /* CollectionViewCellRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionViewCellRepresentable.swift; sourceTree = ""; }; + 06F68D74FFC0506847D22981C8E40D51 /* DataCellRowRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCellRowRepresentable.swift; sourceTree = ""; }; + 0704756EA9FACFE8F3BB8D83FF9C9674 /* DataTableConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableConfiguration.swift; sourceTree = ""; }; + 0891CE13983D816CD5BC854D9BF86988 /* Pods-SwiftDataTables_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftDataTables_Tests-dummy.m"; sourceTree = ""; }; + 0A76DA30AAA6EEE39621F709A40F37F6 /* DataTableSearchTextField.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableSearchTextField.swift; sourceTree = ""; }; + 0AE77659040935EAF35BB34D71479276 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 0FB7F2BB8B9861A29D9BCCB148DB6B3D /* DataTableValueType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableValueType.swift; sourceTree = ""; }; + 1037553484562CE309A3013538712A90 /* Pods_SwiftDataTables_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SwiftDataTables_Tests.framework; path = "Pods-SwiftDataTables_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 153E0ED2126D8B1E2B8D7144426909EB /* PaginationHeader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PaginationHeader.swift; sourceTree = ""; }; + 17B176CC63B21E9114BAD3ED05BF3D6D /* column-sort-descending.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "column-sort-descending.png"; sourceTree = ""; }; + 182F85925B527EC2655C3BE6F101E0D1 /* PaginationHeader.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = PaginationHeader.xib; sourceTree = ""; }; + 1C912BC525E602CC17AA6B442DC0EBB1 /* DataStructureModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataStructureModel.swift; sourceTree = ""; }; + 232DB47C4C799B33385928770246F74F /* Pods-SwiftDataTables_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Example-resources.sh"; sourceTree = ""; }; + 2359DBFADDD457665969A3FCA5C75502 /* MenuLengthHeader.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = MenuLengthHeader.xib; sourceTree = ""; }; + 237BABF73FAE40F8CF30032EC3039E50 /* DataStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataStore.swift; sourceTree = ""; }; + 24963756EC0A128A598EC83A669671F1 /* DataCellViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCellViewModel.swift; sourceTree = ""; }; + 2737DC505F0D2640FFB9E91C202008BC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 29158CC156C493EA08E37581587B3E11 /* Pods-SwiftDataTables_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftDataTables_Example-acknowledgements.plist"; sourceTree = ""; }; + 2A92B59177E1DF2B6130012BE6A7C6D5 /* Pods-SwiftDataTables_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftDataTables_Example-umbrella.h"; sourceTree = ""; }; + 2B488E0C011C7E288A45DF10DD4B4C86 /* DataHeaderFooter.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = DataHeaderFooter.xib; sourceTree = ""; }; + 32E19965C4FAD65C6F1B482D2E776843 /* Pods-SwiftDataTables_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Tests.release.xcconfig"; sourceTree = ""; }; + 336FF79E91B509B884DCB7CEEFDFC22E /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 38D25DFE1A7BA3EBEF02E167819CE42E /* Pods-SwiftDataTables_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Tests-frameworks.sh"; sourceTree = ""; }; + 444A8A28D1BF8EB31CB48CA9C9972C8C /* SwiftDataTables.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftDataTables.modulemap; sourceTree = ""; }; + 4613CA48502FA10A6F55024FE252C680 /* Pods-SwiftDataTables_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Example-frameworks.sh"; sourceTree = ""; }; + 47B90F53BE0DB04D3E3E9255BE3B40DF /* column-sort-ascending.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "column-sort-ascending.png"; sourceTree = ""; }; + 5D88A80CFFEF8CC67148487273BEF025 /* Pods-SwiftDataTables_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Tests-resources.sh"; sourceTree = ""; }; + 659696360C75F10788726B8FE00AE349 /* PaginationHeaderViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PaginationHeaderViewModel.swift; sourceTree = ""; }; 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 6C3A8D70412333ADCA0C556A37BBD2E9 /* DataTableValueType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableValueType.swift; sourceTree = ""; }; - 77FCE7AAEC3AB0B69D0D0F1E47526A55 /* Pods-SwiftDataTables_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Example.debug.xcconfig"; sourceTree = ""; }; - 7C487D342698BF6153F627EF1CF4397D /* CollectionViewCellRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionViewCellRepresentable.swift; sourceTree = ""; }; - 7C513F8F7D3AF14B53395329CC1BC717 /* DataTableConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableConfiguration.swift; sourceTree = ""; }; - 80EFFBC331D7B75C7689F478B728663E /* Pods-SwiftDataTables_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Example.release.xcconfig"; sourceTree = ""; }; - 86C31390A6D99B60A5D28F7BF13FB249 /* Pods-SwiftDataTables_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Tests.release.xcconfig"; sourceTree = ""; }; - 9131FFD952A77A0A786CEC19863B82F1 /* column-sort-ascending.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "column-sort-ascending.png"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9A707D5DA18A0996ADF3231840835908 /* Pods_SwiftDataTables_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftDataTables_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9C520E0139094370E530D4155DD50D34 /* SwiftDataTables.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftDataTables.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A2DFA4FB74F829DD41516A6055D34356 /* PaginationHeaderViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PaginationHeaderViewModel.swift; sourceTree = ""; }; - A4A7D10DFC80274683FA6D5D7CB30045 /* Pods-SwiftDataTables_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftDataTables_Tests-dummy.m"; sourceTree = ""; }; - A9497FD77AFF9D1079B44445D1536828 /* Pods-SwiftDataTables_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftDataTables_Example-acknowledgements.markdown"; sourceTree = ""; }; - AE3FA8C289BB2B0213DFCD9351E770DC /* Pods-SwiftDataTables_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwiftDataTables_Tests.modulemap"; sourceTree = ""; }; - BA787AC36180AF6531916069B681578F /* CollectionViewSupplementaryElementRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionViewSupplementaryElementRepresentable.swift; sourceTree = ""; }; - BC0FD0FEE4B07056B1C991A1EC970739 /* Pods-SwiftDataTables_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftDataTables_Tests-frameworks.sh"; sourceTree = ""; }; - C03D53F98EC1F8820E54DE9AE583010C /* SwiftDataTables.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftDataTables.modulemap; sourceTree = ""; }; - C4B809DC64BDD532758D5941A35282CA /* DataStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataStore.swift; sourceTree = ""; }; - C547268A847B0F6578BC43AA6035EDEB /* DataHeaderFooter.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = DataHeaderFooter.xib; sourceTree = ""; }; - C7803F75FAAC2B457AAC1B6CCAB00501 /* MenuLengthHeaderViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MenuLengthHeaderViewModel.swift; sourceTree = ""; }; - CB47419BD67308B44125C1E3E3083961 /* SwiftDataTables.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SwiftDataTables.bundle; path = SwiftDataTables/SwiftDataTables.bundle; sourceTree = ""; }; - CB6A085A60F2ABFD0A22B1D15214059B /* SwiftDataTable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "SwiftDataTable+Extensions.swift"; sourceTree = ""; }; - D2C50F93E3FF19DF9139E95FCA488BA4 /* Pods-SwiftDataTables_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Tests.debug.xcconfig"; sourceTree = ""; }; - DB26733A19DEE294A032B66575C90AEA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - E47AB0B7F0FAA68C628DB4D10A767208 /* PaginationHeader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PaginationHeader.swift; sourceTree = ""; }; - E7849C22683C87EFCE483F963199F790 /* DataHeaderFooterViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHeaderFooterViewModel.swift; sourceTree = ""; }; - EC083CA7691E49596D895262F66C5B93 /* Pods-SwiftDataTables_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftDataTables_Tests-acknowledgements.plist"; sourceTree = ""; }; - F1E6C461F1C5604D58CFD9E8581D3A94 /* Pods-SwiftDataTables_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftDataTables_Example-acknowledgements.plist"; sourceTree = ""; }; - FF7A08D7AAC7ED3073250FB264C31888 /* SwiftDataTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwiftDataTable.swift; sourceTree = ""; }; + 66DDA1ACA44AD6643A0A7B42EE5822D0 /* DataCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = DataCell.xib; sourceTree = ""; }; + 6AD6A75B26194543191DBC7D98F1482E /* CollectionViewSupplementaryElementRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionViewSupplementaryElementRepresentable.swift; sourceTree = ""; }; + 76B4761F826568E1DA9EC320C3C7221D /* Pods-SwiftDataTables_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftDataTables_Example-acknowledgements.markdown"; sourceTree = ""; }; + 7F341DF575DE3BCC4B68D4FC373A4ECA /* Pods-SwiftDataTables_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftDataTables_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 867EFB0DEFEA7CA0EDEFAF4BB9FD8C85 /* Pods-SwiftDataTables_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftDataTables_Example.modulemap"; sourceTree = ""; }; + 8DAE26892B4072AADEAD7BED0911708B /* DataTableSortType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableSortType.swift; sourceTree = ""; }; + 8DE8176B86431756F2F92E00922401BB /* SwiftDataTables-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftDataTables-umbrella.h"; sourceTree = ""; }; + 92772B10D9B4283BA9C604A251AB28BC /* VirtualPositionTrackable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VirtualPositionTrackable.swift; sourceTree = ""; }; + 9378CD1DC93CFEF29C395F60D1FD0A89 /* SwiftDataTables.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = SwiftDataTables.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9A707D5DA18A0996ADF3231840835908 /* Pods_SwiftDataTables_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SwiftDataTables_Example.framework; path = "Pods-SwiftDataTables_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9C520E0139094370E530D4155DD50D34 /* SwiftDataTables.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftDataTables.framework; path = SwiftDataTables.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5086C44CCD37CD57336EB951642ADB /* SwiftDataTables-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftDataTables-dummy.m"; sourceTree = ""; }; + A0AE506E920DEC2C5B90D390E00D7269 /* Pods-SwiftDataTables_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftDataTables_Tests.modulemap"; sourceTree = ""; }; + A0CEC78016A1359EA9B49D78402B650B /* Pods-SwiftDataTables_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftDataTables_Tests-acknowledgements.plist"; sourceTree = ""; }; + ABFB4EFD59B672442DE9C8ED4BB708D4 /* SwiftDataTable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "SwiftDataTable+Extensions.swift"; sourceTree = ""; }; + B1D4A2233302B0910BECEA617ED76814 /* Pods-SwiftDataTables_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftDataTables_Tests-umbrella.h"; sourceTree = ""; }; + BA009DF036DC110C2397E03AA13F0861 /* DataCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCell.swift; sourceTree = ""; }; + C45E1F552464F8D59C3CBC10C2B7B203 /* DataTableSortable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataTableSortable.swift; sourceTree = ""; }; + C8AD02494BBD049377BA7380E8F39840 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CBD1CFB40667142D724601CD2FBE8CF9 /* MenuLengthHeader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MenuLengthHeader.swift; sourceTree = ""; }; + CCF0D8774286C8F8EF8B70546EB85B2D /* Pods-SwiftDataTables_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Example.release.xcconfig"; sourceTree = ""; }; + D0274511AB6D48D4832C759198CF2F0F /* Pods-SwiftDataTables_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftDataTables_Example-dummy.m"; sourceTree = ""; }; + D374366BFB4EC6A67EC6C42782657CF2 /* SwiftDataTables.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SwiftDataTables.bundle; path = SwiftDataTables/SwiftDataTables.bundle; sourceTree = ""; }; + D90526C0FB8FDD1F09DBC621177B7E9C /* Pods-SwiftDataTables_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Tests.debug.xcconfig"; sourceTree = ""; }; + DA983C79110032720422CFD5DF788526 /* MenuLengthHeaderViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MenuLengthHeaderViewModel.swift; sourceTree = ""; }; + DB01557C8AFE419821D073B5742DB1EC /* DataHeaderFooter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHeaderFooter.swift; sourceTree = ""; }; + DCBF60FEE1923C7B985EC53F708F36EE /* SwiftDataTables-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftDataTables-prefix.pch"; sourceTree = ""; }; + E21C461B530AD67F25FEECFC0649FF2E /* Pods-SwiftDataTables_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftDataTables_Example.debug.xcconfig"; sourceTree = ""; }; + E24BE19B14B640645B963B4771B90C1D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E797638CED9BECB91015DFC7D50B3576 /* DataHeaderFooterViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHeaderFooterViewModel.swift; sourceTree = ""; }; + EA5C14E2346623FC5D24613AF4FFB744 /* SwiftDataTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwiftDataTable.swift; sourceTree = ""; }; + EB9D8A141074C381B59ED0AF6CBEDEDC /* SwiftDataTableLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwiftDataTableLayout.swift; sourceTree = ""; }; + EFA343BB874F4D48F055EEBCDE88E70E /* DataCellLayoutAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataCellLayoutAttributes.swift; sourceTree = ""; }; + F1E6302D8BD00564C7DA9C39CC93E7D0 /* SwiftDataTables.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftDataTables.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -133,11 +143,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5E68A6F235EE759601917EF07DC47CCF /* Frameworks */ = { + 941CC9296A28D0CACDF871A398A07B97 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0678BE3339C5759D29CA16B60B227E50 /* Foundation.framework in Frameworks */, + 66485BD86F02676394AD34CA7564C8A6 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -152,154 +162,137 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 27FAFA31EB9F7BE9BAEA050F02406DCD /* Pods-SwiftDataTables_Example */ = { + 0496F14B64C05B9043D43D933DDDB3D1 /* PaginationHeader */ = { isa = PBXGroup; children = ( - DB26733A19DEE294A032B66575C90AEA /* Info.plist */, - 15D74D4F308C07A9FF50DFDA2A0736D9 /* Pods-SwiftDataTables_Example.modulemap */, - A9497FD77AFF9D1079B44445D1536828 /* Pods-SwiftDataTables_Example-acknowledgements.markdown */, - F1E6C461F1C5604D58CFD9E8581D3A94 /* Pods-SwiftDataTables_Example-acknowledgements.plist */, - 384C6C6A4148C520C98D0600D7393727 /* Pods-SwiftDataTables_Example-dummy.m */, - 33462704076851C1B758B976F53B9A0C /* Pods-SwiftDataTables_Example-frameworks.sh */, - 4AF636A6C261B4B22000184FC87CE66A /* Pods-SwiftDataTables_Example-resources.sh */, - 5277C1C4F649828D9CEE62AF4D307B53 /* Pods-SwiftDataTables_Example-umbrella.h */, - 77FCE7AAEC3AB0B69D0D0F1E47526A55 /* Pods-SwiftDataTables_Example.debug.xcconfig */, - 80EFFBC331D7B75C7689F478B728663E /* Pods-SwiftDataTables_Example.release.xcconfig */, - ); - name = "Pods-SwiftDataTables_Example"; - path = "Target Support Files/Pods-SwiftDataTables_Example"; - sourceTree = ""; - }; - 3455B05AE5AF986A68BD1CB08855FB7A /* PaginationHeader */ = { - isa = PBXGroup; - children = ( - E47AB0B7F0FAA68C628DB4D10A767208 /* PaginationHeader.swift */, - 0A61CC27A515E5410E39AC1213C3335D /* PaginationHeader.xib */, - A2DFA4FB74F829DD41516A6055D34356 /* PaginationHeaderViewModel.swift */, + 153E0ED2126D8B1E2B8D7144426909EB /* PaginationHeader.swift */, + 182F85925B527EC2655C3BE6F101E0D1 /* PaginationHeader.xib */, + 659696360C75F10788726B8FE00AE349 /* PaginationHeaderViewModel.swift */, ); + name = PaginationHeader; path = PaginationHeader; sourceTree = ""; }; - 3497F41B653122A5E34C8B38C4FE84DE /* SwiftDataTables */ = { + 051270AE601A98A6E1BB7B7D885B0A3C /* Resources */ = { isa = PBXGroup; children = ( - EEEEFA0EEF56B425C0EB68B5FC584A07 /* Classes */, - A6DE4705556BF830B0759BBB8776A10E /* Resources */, - 5BCF9FD33FE58ACD4A3533E756C0A6E1 /* Support Files */, - EDCF7DB638D577F1A2791692AFA7EDAD /* SwiftDataTables.bundle */, + D374366BFB4EC6A67EC6C42782657CF2 /* SwiftDataTables.bundle */, ); - name = SwiftDataTables; - path = ../..; + name = Resources; sourceTree = ""; }; - 3A0E5737E1A9EACE754CEA0DBB92718D /* DataCell */ = { + 0A1478352DD098E059A563836FA80B2C /* Pods-SwiftDataTables_Tests */ = { isa = PBXGroup; children = ( - 61A7F5AA106C24A4C324630AB3153A11 /* DataCell.swift */, - 0A0D6DF7F9E8BD382C49263C129AE2B0 /* DataCell.xib */, - 01D73D1CA090A45620F358543E012989 /* DataCellLayoutAttributes.swift */, - 5448D76AA0E2C4D91FEFA320DE1580C7 /* DataCellViewModel.swift */, + C8AD02494BBD049377BA7380E8F39840 /* Info.plist */, + A0AE506E920DEC2C5B90D390E00D7269 /* Pods-SwiftDataTables_Tests.modulemap */, + 7F341DF575DE3BCC4B68D4FC373A4ECA /* Pods-SwiftDataTables_Tests-acknowledgements.markdown */, + A0CEC78016A1359EA9B49D78402B650B /* Pods-SwiftDataTables_Tests-acknowledgements.plist */, + 0891CE13983D816CD5BC854D9BF86988 /* Pods-SwiftDataTables_Tests-dummy.m */, + 38D25DFE1A7BA3EBEF02E167819CE42E /* Pods-SwiftDataTables_Tests-frameworks.sh */, + 5D88A80CFFEF8CC67148487273BEF025 /* Pods-SwiftDataTables_Tests-resources.sh */, + B1D4A2233302B0910BECEA617ED76814 /* Pods-SwiftDataTables_Tests-umbrella.h */, + D90526C0FB8FDD1F09DBC621177B7E9C /* Pods-SwiftDataTables_Tests.debug.xcconfig */, + 32E19965C4FAD65C6F1B482D2E776843 /* Pods-SwiftDataTables_Tests.release.xcconfig */, ); - path = DataCell; + name = "Pods-SwiftDataTables_Tests"; + path = "Target Support Files/Pods-SwiftDataTables_Tests"; sourceTree = ""; }; - 572B06131F86ECB12447507EB9BE95A6 /* Extensions */ = { + 0F84B114DB984C472EBB0FD8D0086A94 /* DataCell */ = { isa = PBXGroup; children = ( - CB6A085A60F2ABFD0A22B1D15214059B /* SwiftDataTable+Extensions.swift */, + BA009DF036DC110C2397E03AA13F0861 /* DataCell.swift */, + 66DDA1ACA44AD6643A0A7B42EE5822D0 /* DataCell.xib */, + EFA343BB874F4D48F055EEBCDE88E70E /* DataCellLayoutAttributes.swift */, + 24963756EC0A128A598EC83A669671F1 /* DataCellViewModel.swift */, ); - path = Extensions; + name = DataCell; + path = DataCell; sourceTree = ""; }; - 5BCF9FD33FE58ACD4A3533E756C0A6E1 /* Support Files */ = { + 3EA30FD8BA0E84FA7D17F0B678314CD7 /* Support Files */ = { isa = PBXGroup; children = ( - 2212E7284291A93CCF185B4B441B833B /* Info.plist */, - C03D53F98EC1F8820E54DE9AE583010C /* SwiftDataTables.modulemap */, - 0CA35274C244CFCEABBF8BBA51585F9A /* SwiftDataTables.xcconfig */, - 13BB4B69683AD40BBC9E00A909F24170 /* SwiftDataTables-dummy.m */, - 4C0A5FB57FFFD4B5C20CE6DBE5E49E2C /* SwiftDataTables-prefix.pch */, - 0AEBE0640FBAC21A77B84F863C096779 /* SwiftDataTables-umbrella.h */, + E24BE19B14B640645B963B4771B90C1D /* Info.plist */, + 444A8A28D1BF8EB31CB48CA9C9972C8C /* SwiftDataTables.modulemap */, + F1E6302D8BD00564C7DA9C39CC93E7D0 /* SwiftDataTables.xcconfig */, + 9E5086C44CCD37CD57336EB951642ADB /* SwiftDataTables-dummy.m */, + DCBF60FEE1923C7B985EC53F708F36EE /* SwiftDataTables-prefix.pch */, + 8DE8176B86431756F2F92E00922401BB /* SwiftDataTables-umbrella.h */, ); name = "Support Files"; path = "Example/Pods/Target Support Files/SwiftDataTables"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 4720CD4E4DC5889C299C9B612E93669A /* Development Pods */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - FE92849BE4F6EF908CB38E43B2CCB0A0 /* Development Pods */, - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - BF3D0A2E35A9A4F129C10A8EC3A9C0C7 /* Products */, - 8558C28D56B0F1833537529A4873189A /* Targets Support Files */, + CBBC95C9DA71EE82D6F4373538B4371E /* SwiftDataTables */, ); + name = "Development Pods"; sourceTree = ""; }; - 8558C28D56B0F1833537529A4873189A /* Targets Support Files */ = { + 4878D6202B68F622D2242888AED00896 /* HeaderFooter */ = { isa = PBXGroup; children = ( - 27FAFA31EB9F7BE9BAEA050F02406DCD /* Pods-SwiftDataTables_Example */, - 9654D02CE6516AA89ECAC06B710F7969 /* Pods-SwiftDataTables_Tests */, + DB01557C8AFE419821D073B5742DB1EC /* DataHeaderFooter.swift */, + 2B488E0C011C7E288A45DF10DD4B4C86 /* DataHeaderFooter.xib */, + E797638CED9BECB91015DFC7D50B3576 /* DataHeaderFooterViewModel.swift */, ); - name = "Targets Support Files"; + name = HeaderFooter; + path = HeaderFooter; sourceTree = ""; }; - 9654D02CE6516AA89ECAC06B710F7969 /* Pods-SwiftDataTables_Tests */ = { + 5C2AEFD21F776BE8A83A11F3DE24B8E1 /* Extensions */ = { isa = PBXGroup; children = ( - 3FCF927BF691F6711D8A34DA24DE0727 /* Info.plist */, - AE3FA8C289BB2B0213DFCD9351E770DC /* Pods-SwiftDataTables_Tests.modulemap */, - 18B3638F5AD13E6EBCB7FBA837D1D5AD /* Pods-SwiftDataTables_Tests-acknowledgements.markdown */, - EC083CA7691E49596D895262F66C5B93 /* Pods-SwiftDataTables_Tests-acknowledgements.plist */, - A4A7D10DFC80274683FA6D5D7CB30045 /* Pods-SwiftDataTables_Tests-dummy.m */, - BC0FD0FEE4B07056B1C991A1EC970739 /* Pods-SwiftDataTables_Tests-frameworks.sh */, - 026CC3068F40BE2D05647A2410B36B3B /* Pods-SwiftDataTables_Tests-resources.sh */, - 3CC4698961C3BFC187A9932973FDBA01 /* Pods-SwiftDataTables_Tests-umbrella.h */, - D2C50F93E3FF19DF9139E95FCA488BA4 /* Pods-SwiftDataTables_Tests.debug.xcconfig */, - 86C31390A6D99B60A5D28F7BF13FB249 /* Pods-SwiftDataTables_Tests.release.xcconfig */, + ABFB4EFD59B672442DE9C8ED4BB708D4 /* SwiftDataTable+Extensions.swift */, ); - name = "Pods-SwiftDataTables_Tests"; - path = "Target Support Files/Pods-SwiftDataTables_Tests"; + name = Extensions; + path = Extensions; sourceTree = ""; }; - A1267313A34060C50C8466E2B3A83AAA /* MenuLengthHeader */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - 31A5062BE86488A9A50643B1191BB1C2 /* MenuLengthHeader.swift */, - 484A80B8C4086905506DC73494D1A1AC /* MenuLengthHeader.xib */, - C7803F75FAAC2B457AAC1B6CCAB00501 /* MenuLengthHeaderViewModel.swift */, + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 4720CD4E4DC5889C299C9B612E93669A /* Development Pods */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + BF3D0A2E35A9A4F129C10A8EC3A9C0C7 /* Products */, + 8558C28D56B0F1833537529A4873189A /* Targets Support Files */, ); - path = MenuLengthHeader; sourceTree = ""; }; - A6DE4705556BF830B0759BBB8776A10E /* Resources */ = { + 807B15A1A0A15DC9E0D6589003F63098 /* MenuLengthHeader */ = { isa = PBXGroup; children = ( - CB47419BD67308B44125C1E3E3083961 /* SwiftDataTables.bundle */, + CBD1CFB40667142D724601CD2FBE8CF9 /* MenuLengthHeader.swift */, + 2359DBFADDD457665969A3FCA5C75502 /* MenuLengthHeader.xib */, + DA983C79110032720422CFD5DF788526 /* MenuLengthHeaderViewModel.swift */, ); - name = Resources; + name = MenuLengthHeader; + path = MenuLengthHeader; sourceTree = ""; }; - A7F4F9FC25B1CB379C7E8BD670DF4345 /* HeaderFooter */ = { + 8558C28D56B0F1833537529A4873189A /* Targets Support Files */ = { isa = PBXGroup; children = ( - 2DFC5500E4090D0706D9FBF22DE714AE /* DataHeaderFooter.swift */, - C547268A847B0F6578BC43AA6035EDEB /* DataHeaderFooter.xib */, - E7849C22683C87EFCE483F963199F790 /* DataHeaderFooterViewModel.swift */, + F354F30F13430D9EF412A64849F2DFF2 /* Pods-SwiftDataTables_Example */, + 0A1478352DD098E059A563836FA80B2C /* Pods-SwiftDataTables_Tests */, ); - path = HeaderFooter; + name = "Targets Support Files"; sourceTree = ""; }; - B2BA00D9319CA837B86C7378EF0B2B58 /* Protocols */ = { + AFF6D2C2D4A91D6274943CF85CEDF814 /* SwiftDataTables.bundle */ = { isa = PBXGroup; children = ( - 7C487D342698BF6153F627EF1CF4397D /* CollectionViewCellRepresentable.swift */, - BA787AC36180AF6531916069B681578F /* CollectionViewSupplementaryElementRepresentable.swift */, - 0FE72BE6169B142A0E009D060BDFB1F9 /* DataCellRowRepresentable.swift */, - 20194A9F58CA748CA4D6336CFA20F1D5 /* VirtualPositionTrackable.swift */, + 47B90F53BE0DB04D3E3E9255BE3B40DF /* column-sort-ascending.png */, + 17B176CC63B21E9114BAD3ED05BF3D6D /* column-sort-descending.png */, + 01BFF23CBAAE9C98AFC18054BFACF879 /* column-sort-unspecified.png */, ); - path = Protocols; + name = SwiftDataTables.bundle; + path = SwiftDataTables/SwiftDataTables.bundle; sourceTree = ""; }; BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { @@ -320,6 +313,19 @@ name = Products; sourceTree = ""; }; + CBBC95C9DA71EE82D6F4373538B4371E /* SwiftDataTables */ = { + isa = PBXGroup; + children = ( + EE5C9A238B002057451FCCBC929170CB /* Classes */, + FECA8DF146D93669F05229F894D1A622 /* Pod */, + 051270AE601A98A6E1BB7B7D885B0A3C /* Resources */, + 3EA30FD8BA0E84FA7D17F0B678314CD7 /* Support Files */, + AFF6D2C2D4A91D6274943CF85CEDF814 /* SwiftDataTables.bundle */, + ); + name = SwiftDataTables; + path = ../..; + sourceTree = ""; + }; D35AF013A5F0BAD4F32504907A52519E /* iOS */ = { isa = PBXGroup; children = ( @@ -328,46 +334,67 @@ name = iOS; sourceTree = ""; }; - EDCF7DB638D577F1A2791692AFA7EDAD /* SwiftDataTables.bundle */ = { + D37D5A338968ADD35B56207965F16AA6 /* Protocols */ = { isa = PBXGroup; children = ( - 9131FFD952A77A0A786CEC19863B82F1 /* column-sort-ascending.png */, - 408D9D26AF5FC547E0B56DABA569BD6A /* column-sort-descending.png */, - 18F48F719F672BBE88946597FC085475 /* column-sort-unspecified.png */, + 03818016FD545D848DC97880DFE9BBF7 /* CollectionViewCellRepresentable.swift */, + 6AD6A75B26194543191DBC7D98F1482E /* CollectionViewSupplementaryElementRepresentable.swift */, + 06F68D74FFC0506847D22981C8E40D51 /* DataCellRowRepresentable.swift */, + 92772B10D9B4283BA9C604A251AB28BC /* VirtualPositionTrackable.swift */, ); - name = SwiftDataTables.bundle; - path = SwiftDataTables/SwiftDataTables.bundle; + name = Protocols; + path = Protocols; sourceTree = ""; }; - EEEEFA0EEF56B425C0EB68B5FC584A07 /* Classes */ = { + EE5C9A238B002057451FCCBC929170CB /* Classes */ = { isa = PBXGroup; children = ( - C4B809DC64BDD532758D5941A35282CA /* DataStore.swift */, - 3891027CF8EA96DF03B4AD26DE7771F2 /* DataStructureModel.swift */, - 7C513F8F7D3AF14B53395329CC1BC717 /* DataTableConfiguration.swift */, - 0F9F74A75FCEEBCEB1FCBF4CCAC05933 /* DataTableSearchTextField.swift */, - 1CFB39CA20F49AD0D69D1783F998A088 /* DataTableSortable.swift */, - 417153628F679B310D45FF8821E47CB8 /* DataTableSortType.swift */, - 6C3A8D70412333ADCA0C556A37BBD2E9 /* DataTableValueType.swift */, - FF7A08D7AAC7ED3073250FB264C31888 /* SwiftDataTable.swift */, - 3F1A9A781C2759AA09F67FF9E831E28C /* SwiftDataTableLayout.swift */, - 3A0E5737E1A9EACE754CEA0DBB92718D /* DataCell */, - 572B06131F86ECB12447507EB9BE95A6 /* Extensions */, - A7F4F9FC25B1CB379C7E8BD670DF4345 /* HeaderFooter */, - A1267313A34060C50C8466E2B3A83AAA /* MenuLengthHeader */, - 3455B05AE5AF986A68BD1CB08855FB7A /* PaginationHeader */, - B2BA00D9319CA837B86C7378EF0B2B58 /* Protocols */, + 237BABF73FAE40F8CF30032EC3039E50 /* DataStore.swift */, + 1C912BC525E602CC17AA6B442DC0EBB1 /* DataStructureModel.swift */, + 0704756EA9FACFE8F3BB8D83FF9C9674 /* DataTableConfiguration.swift */, + 0A76DA30AAA6EEE39621F709A40F37F6 /* DataTableSearchTextField.swift */, + C45E1F552464F8D59C3CBC10C2B7B203 /* DataTableSortable.swift */, + 8DAE26892B4072AADEAD7BED0911708B /* DataTableSortType.swift */, + 0FB7F2BB8B9861A29D9BCCB148DB6B3D /* DataTableValueType.swift */, + EA5C14E2346623FC5D24613AF4FFB744 /* SwiftDataTable.swift */, + EB9D8A141074C381B59ED0AF6CBEDEDC /* SwiftDataTableLayout.swift */, + 0F84B114DB984C472EBB0FD8D0086A94 /* DataCell */, + 5C2AEFD21F776BE8A83A11F3DE24B8E1 /* Extensions */, + 4878D6202B68F622D2242888AED00896 /* HeaderFooter */, + 807B15A1A0A15DC9E0D6589003F63098 /* MenuLengthHeader */, + 0496F14B64C05B9043D43D933DDDB3D1 /* PaginationHeader */, + D37D5A338968ADD35B56207965F16AA6 /* Protocols */, ); name = Classes; path = SwiftDataTables/Classes; sourceTree = ""; }; - FE92849BE4F6EF908CB38E43B2CCB0A0 /* Development Pods */ = { + F354F30F13430D9EF412A64849F2DFF2 /* Pods-SwiftDataTables_Example */ = { isa = PBXGroup; children = ( - 3497F41B653122A5E34C8B38C4FE84DE /* SwiftDataTables */, + 2737DC505F0D2640FFB9E91C202008BC /* Info.plist */, + 867EFB0DEFEA7CA0EDEFAF4BB9FD8C85 /* Pods-SwiftDataTables_Example.modulemap */, + 76B4761F826568E1DA9EC320C3C7221D /* Pods-SwiftDataTables_Example-acknowledgements.markdown */, + 29158CC156C493EA08E37581587B3E11 /* Pods-SwiftDataTables_Example-acknowledgements.plist */, + D0274511AB6D48D4832C759198CF2F0F /* Pods-SwiftDataTables_Example-dummy.m */, + 4613CA48502FA10A6F55024FE252C680 /* Pods-SwiftDataTables_Example-frameworks.sh */, + 232DB47C4C799B33385928770246F74F /* Pods-SwiftDataTables_Example-resources.sh */, + 2A92B59177E1DF2B6130012BE6A7C6D5 /* Pods-SwiftDataTables_Example-umbrella.h */, + E21C461B530AD67F25FEECFC0649FF2E /* Pods-SwiftDataTables_Example.debug.xcconfig */, + CCF0D8774286C8F8EF8B70546EB85B2D /* Pods-SwiftDataTables_Example.release.xcconfig */, ); - name = "Development Pods"; + name = "Pods-SwiftDataTables_Example"; + path = "Target Support Files/Pods-SwiftDataTables_Example"; + sourceTree = ""; + }; + FECA8DF146D93669F05229F894D1A622 /* Pod */ = { + isa = PBXGroup; + children = ( + 0AE77659040935EAF35BB34D71479276 /* LICENSE */, + 336FF79E91B509B884DCB7CEEFDFC22E /* README.md */, + 9378CD1DC93CFEF29C395F60D1FD0A89 /* SwiftDataTables.podspec */, + ); + name = Pod; sourceTree = ""; }; /* End PBXGroup section */ @@ -389,11 +416,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 695DDB39E57385E3CABD2746DAEA726F /* Headers */ = { + 669F02A69562D7069EF108F1B1A57DEB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C18134F7C0F58091AC9EA05ECEA44E6F /* Pods-SwiftDataTables_Tests-umbrella.h in Headers */, + C290DC4526B04C72DC3A5BA6E155D6A4 /* Pods-SwiftDataTables_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -418,17 +445,18 @@ productReference = 9A707D5DA18A0996ADF3231840835908 /* Pods_SwiftDataTables_Example.framework */; productType = "com.apple.product-type.framework"; }; - D7C9644394F18A38844DF060A4BB1F12 /* Pods-SwiftDataTables_Tests */ = { + 62069CE54C711039C823A922C7E49FC5 /* Pods-SwiftDataTables_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 5F72E23B6F745C22B4B6A168E2AA67FB /* Build configuration list for PBXNativeTarget "Pods-SwiftDataTables_Tests" */; + buildConfigurationList = 64CA49C7FF8C80714133D3E4CD242D06 /* Build configuration list for PBXNativeTarget "Pods-SwiftDataTables_Tests" */; buildPhases = ( - 849F698359BE4B14AF150EDAC81CF855 /* Sources */, - 5E68A6F235EE759601917EF07DC47CCF /* Frameworks */, - 695DDB39E57385E3CABD2746DAEA726F /* Headers */, + A61F8F8531E65F21C20D64450A33FCCC /* Sources */, + 941CC9296A28D0CACDF871A398A07B97 /* Frameworks */, + 669F02A69562D7069EF108F1B1A57DEB /* Headers */, ); buildRules = ( ); dependencies = ( + 9422C34884DCBA3D947E1A218F43B656 /* PBXTargetDependency */, ); name = "Pods-SwiftDataTables_Tests"; productName = "Pods-SwiftDataTables_Tests"; @@ -439,7 +467,7 @@ isa = PBXNativeTarget; buildConfigurationList = E37FE4BE49E660A00455BBA146E635D8 /* Build configuration list for PBXNativeTarget "SwiftDataTables" */; buildPhases = ( - 9AAFEEE1D58A40DE418FA1BBDC8564DF /* Sources */, + 9B1EC060B9D98FFA4163FCCA066156E2 /* Sources */, 5203177A10482D5BE9424CDDB4F41031 /* Frameworks */, A2D8D60D11B3A380B293A1985DF44EFC /* Resources */, 2088B95A042860FA554F033730639BCD /* Headers */, @@ -459,16 +487,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0940; - TargetAttributes = { - 35A7856F4E4D9B71B975A5AF937288AB = { - LastSwiftMigration = ""; - }; - E3CFE72A7C3BEAB4AFEA8B37BAF38809 = { - LastSwiftMigration = 0900; - }; - }; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -483,7 +503,7 @@ projectRoot = ""; targets = ( 35A7856F4E4D9B71B975A5AF937288AB /* Pods-SwiftDataTables_Example */, - D7C9644394F18A38844DF060A4BB1F12 /* Pods-SwiftDataTables_Tests */, + 62069CE54C711039C823A922C7E49FC5 /* Pods-SwiftDataTables_Tests */, E3CFE72A7C3BEAB4AFEA8B37BAF38809 /* SwiftDataTables */, ); }; @@ -509,49 +529,49 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 849F698359BE4B14AF150EDAC81CF855 /* Sources */ = { + 9B1EC060B9D98FFA4163FCCA066156E2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 73ED7945DE34869F021F0ABCDA39FD5D /* Pods-SwiftDataTables_Tests-dummy.m in Sources */, + 0A366C165119C06E9C9EF14E7407A310 /* CollectionViewCellRepresentable.swift in Sources */, + 45C73B36FBB72D7BE23A7C92BB4A7232 /* CollectionViewSupplementaryElementRepresentable.swift in Sources */, + 225D1EBE021CD09C926D7BE984AB77BE /* column-sort-ascending.png in Sources */, + E08293F3963F1480E53ABE4812FDD949 /* column-sort-descending.png in Sources */, + 1514A045F41B816A4D6E0244784901A2 /* column-sort-unspecified.png in Sources */, + 17C3B50AECB8E506D2E59649720D03C0 /* DataCell.swift in Sources */, + 6CD3DE05D64D9B0720C9ACAA5623FE12 /* DataCell.xib in Sources */, + D0DCEEBB82775915EB4EED227637CF9B /* DataCellLayoutAttributes.swift in Sources */, + D8B83086C46AEC137B8FEFEDD91FEB5B /* DataCellRowRepresentable.swift in Sources */, + 6E3C1C905389352DECB1B885CB334119 /* DataCellViewModel.swift in Sources */, + 106723C461B568F00D34D44802AD0C4C /* DataHeaderFooter.swift in Sources */, + 2EA81963810325E602CE90B449C81F1F /* DataHeaderFooter.xib in Sources */, + A94E24E22C63113E76CE1C203B87F646 /* DataHeaderFooterViewModel.swift in Sources */, + E799ABA58B8821EA21F44959318389C2 /* DataStore.swift in Sources */, + 234923797075065284E325648A9B13E7 /* DataStructureModel.swift in Sources */, + C1964B7EA427806E76E6BABBF7CA63C3 /* DataTableConfiguration.swift in Sources */, + 84FE568F0F5263135796E905E44298FB /* DataTableSearchTextField.swift in Sources */, + CF51A3E69692A1CF42C5BF17E089EF2E /* DataTableSortable.swift in Sources */, + 1FD1B699A41B9285D8EFB84D402416DB /* DataTableSortType.swift in Sources */, + 8D1CD1843C4BAAFEBD75B7DC6D33AA30 /* DataTableValueType.swift in Sources */, + C86E3153A3571BF3895D554AD002D53F /* MenuLengthHeader.swift in Sources */, + 480E1E82686594082B624019A06DE0C4 /* MenuLengthHeader.xib in Sources */, + B4480CF1CB890A1E5C6806199279ABA7 /* MenuLengthHeaderViewModel.swift in Sources */, + 2BEA49AD6AF01B9706C46E0D43138A43 /* PaginationHeader.swift in Sources */, + E97B38E2306D3B094ABBDCBDF8F3D433 /* PaginationHeader.xib in Sources */, + A798906049F59D24EAAD9F54C2DE96CB /* PaginationHeaderViewModel.swift in Sources */, + 2FAC4B0AFEA58C006044FB9A3943582F /* SwiftDataTable+Extensions.swift in Sources */, + CF70F094F69FCEF9C8B50347FAAB1869 /* SwiftDataTable.swift in Sources */, + 6FC6A99ADD72BC833005F348E45BA62C /* SwiftDataTableLayout.swift in Sources */, + E6D2153007F7810D51C938950F740782 /* SwiftDataTables-dummy.m in Sources */, + 64C85C9BFF4D6601EDD33E6D81D0DFD1 /* VirtualPositionTrackable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9AAFEEE1D58A40DE418FA1BBDC8564DF /* Sources */ = { + A61F8F8531E65F21C20D64450A33FCCC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 25AA98F7EF1F972D51683FAD5167404B /* CollectionViewCellRepresentable.swift in Sources */, - 2FBD0B481310EAC7E945B7E6ADC2BD6B /* CollectionViewSupplementaryElementRepresentable.swift in Sources */, - AADE9EDF7E65478F3AE383AD9965A79D /* column-sort-ascending.png in Sources */, - 23E1FF0A634F5873C0CE5152C7D64B2D /* column-sort-descending.png in Sources */, - 9BE7C5D14A7F34235DE1EDBD793FEFF9 /* column-sort-unspecified.png in Sources */, - 89CFE050739D961DE59C2351EA5D5C0D /* DataCell.swift in Sources */, - BD04BD22D99AD0D57BD28E0D3ECBE4F6 /* DataCell.xib in Sources */, - C6640C67E1DFCF79209C6EF99CF0BD97 /* DataCellLayoutAttributes.swift in Sources */, - 031FBC727BE4D1D666B30200B90CBB68 /* DataCellRowRepresentable.swift in Sources */, - 201A03AB548D0FCC6C74991821E2A4EE /* DataCellViewModel.swift in Sources */, - 7745AEDB7DCE0BF64FC316EF01F5FDC8 /* DataHeaderFooter.swift in Sources */, - 7B354B776644B60E3B662E0AE4503364 /* DataHeaderFooter.xib in Sources */, - 9FFFE412250C4C1CB205AC82D400373E /* DataHeaderFooterViewModel.swift in Sources */, - CB9DB5650E450DAF81B6537BEC7EE76C /* DataStore.swift in Sources */, - 0F26306004341AD9FEE31748629DBB7B /* DataStructureModel.swift in Sources */, - 93B72955935B8311011D312B70B29587 /* DataTableConfiguration.swift in Sources */, - 13477E57A0D48F7D632943BFD4C32F9C /* DataTableSearchTextField.swift in Sources */, - 0CA82A50ECFAC3D58FCD89C156835FDD /* DataTableSortable.swift in Sources */, - 3BB91B74ACE68C5880CE7F647FE9A45A /* DataTableSortType.swift in Sources */, - A1A31487481989BB20B27665BE33A849 /* DataTableValueType.swift in Sources */, - E2578092167EADA6CA8B17659F388195 /* MenuLengthHeader.swift in Sources */, - 79135FB2CDAC3B0F85985478BF9E6C5E /* MenuLengthHeader.xib in Sources */, - 4C0CCCBA6A0BDE6D26DCF38BF8AB5F47 /* MenuLengthHeaderViewModel.swift in Sources */, - 69CDB64EB9B9225B0CB08B3E345DC3E2 /* PaginationHeader.swift in Sources */, - 1E6050708BB90851544DD1982E0E8068 /* PaginationHeader.xib in Sources */, - C5EA480EE9FFC4EBCE40E52B4441ABF9 /* PaginationHeaderViewModel.swift in Sources */, - F9F8F33E84A48E91800182DBEF0A87FC /* SwiftDataTable+Extensions.swift in Sources */, - 052F6C7A88022A11EFA12C83A3A27C8C /* SwiftDataTable.swift in Sources */, - 7B85D7F62EACA7E7914202CBD79E9045 /* SwiftDataTableLayout.swift in Sources */, - 5C6A4AF70D01EE4EE6579C5F5B01718F /* SwiftDataTables-dummy.m in Sources */, - 5591C3B097F7F357A07A2210DC427B78 /* VirtualPositionTrackable.swift in Sources */, + 458EB83FAAE600BAE5A5CAF5EE0056D6 /* Pods-SwiftDataTables_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -564,65 +584,32 @@ target = E3CFE72A7C3BEAB4AFEA8B37BAF38809 /* SwiftDataTables */; targetProxy = 24B7DB8EA90296E371C09B7637B33DDD /* PBXContainerItemProxy */; }; + 9422C34884DCBA3D947E1A218F43B656 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwiftDataTables_Example"; + target = 35A7856F4E4D9B71B975A5AF937288AB /* Pods-SwiftDataTables_Example */; + targetProxy = 2D9BE27AEC8C378758506E1AB9E98713 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 056ECD9E220FE80344EDB7AC79151B5D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 77FCE7AAEC3AB0B69D0D0F1E47526A55 /* Pods-SwiftDataTables_Example.debug.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SwiftDataTables_Example/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftDataTables_Example; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 1C7D17A37D091C98D2F0DD886C3A9320 /* Debug */ = { + 1EE19F5DD95931924296F637BF18BD8F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; @@ -631,17 +618,20 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -650,185 +640,207 @@ "DEBUG=1", "$(inherited)", ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 1D98B475A69DAFFFC5DAEFF5630C2F3A /* Debug */ = { + 2701251981CB7572B087089FBAFC2E9C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2C50F93E3FF19DF9139E95FCA488BA4 /* Pods-SwiftDataTables_Tests.debug.xcconfig */; + baseConfigurationReference = F1E6302D8BD00564C7DA9C39CC93E7D0 /* SwiftDataTables.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SwiftDataTables_Tests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftDataTables/SwiftDataTables-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftDataTables/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftDataTables_Tests; + MODULEMAP_FILE = "Target Support Files/SwiftDataTables/SwiftDataTables.modulemap"; + PRODUCT_MODULE_NAME = SwiftDataTables; + PRODUCT_NAME = SwiftDataTables; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 258096217420AF2F531F55DE1238783E /* Release */ = { + 28FF554EA7462EFEA2BBDDA9DBF08179 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 80EFFBC331D7B75C7689F478B728663E /* Pods-SwiftDataTables_Example.release.xcconfig */; + baseConfigurationReference = CCF0D8774286C8F8EF8B70546EB85B2D /* Pods-SwiftDataTables_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-SwiftDataTables_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftDataTables_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8295F8985B975ACD91E6E0F1CB34504A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F1E6302D8BD00564C7DA9C39CC93E7D0 /* SwiftDataTables.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftDataTables/SwiftDataTables-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftDataTables/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SwiftDataTables/SwiftDataTables.modulemap"; + PRODUCT_MODULE_NAME = SwiftDataTables; + PRODUCT_NAME = SwiftDataTables; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 27BACFC397D60BA17D05A9F70BE265C0 /* Release */ = { + AB3C9E41825D055FFE44257C428301E7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 86C31390A6D99B60A5D28F7BF13FB249 /* Pods-SwiftDataTables_Tests.release.xcconfig */; + baseConfigurationReference = D90526C0FB8FDD1F09DBC621177B7E9C /* Pods-SwiftDataTables_Tests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-SwiftDataTables_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftDataTables_Tests; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 312CCB2DC09D5B5768B9F0C5EBBE7B7F /* Debug */ = { + CDE86AD7B5DB6212ADE5E4EDE212D2BD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0CA35274C244CFCEABBF8BBA51585F9A /* SwiftDataTables.xcconfig */; + baseConfigurationReference = E21C461B530AD67F25FEECFC0649FF2E /* Pods-SwiftDataTables_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftDataTables/SwiftDataTables-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftDataTables/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftDataTables_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftDataTables/SwiftDataTables.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftDataTables; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 34FE9531DA9AF2820790339988D5FF41 /* Release */ = { + F4568DEE257655D290C2B9CEAB37C934 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; @@ -837,68 +849,68 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; }; name = Release; }; - 3B3EEE71082984CFE16C4ED515220340 /* Release */ = { + FE725C1918990B78F4778C66A8CC94AD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0CA35274C244CFCEABBF8BBA51585F9A /* SwiftDataTables.xcconfig */; + baseConfigurationReference = 32E19965C4FAD65C6F1B482D2E776843 /* Pods-SwiftDataTables_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftDataTables/SwiftDataTables-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftDataTables/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftDataTables_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftDataTables/SwiftDataTables.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftDataTables; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -910,8 +922,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1C7D17A37D091C98D2F0DD886C3A9320 /* Debug */, - 34FE9531DA9AF2820790339988D5FF41 /* Release */, + 1EE19F5DD95931924296F637BF18BD8F /* Debug */, + F4568DEE257655D290C2B9CEAB37C934 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -919,17 +931,17 @@ 57D0CEFE11F66987FB10E1E5D0ABC661 /* Build configuration list for PBXNativeTarget "Pods-SwiftDataTables_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 056ECD9E220FE80344EDB7AC79151B5D /* Debug */, - 258096217420AF2F531F55DE1238783E /* Release */, + CDE86AD7B5DB6212ADE5E4EDE212D2BD /* Debug */, + 28FF554EA7462EFEA2BBDDA9DBF08179 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5F72E23B6F745C22B4B6A168E2AA67FB /* Build configuration list for PBXNativeTarget "Pods-SwiftDataTables_Tests" */ = { + 64CA49C7FF8C80714133D3E4CD242D06 /* Build configuration list for PBXNativeTarget "Pods-SwiftDataTables_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1D98B475A69DAFFFC5DAEFF5630C2F3A /* Debug */, - 27BACFC397D60BA17D05A9F70BE265C0 /* Release */, + AB3C9E41825D055FFE44257C428301E7 /* Debug */, + FE725C1918990B78F4778C66A8CC94AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -937,8 +949,8 @@ E37FE4BE49E660A00455BBA146E635D8 /* Build configuration list for PBXNativeTarget "SwiftDataTables" */ = { isa = XCConfigurationList; buildConfigurations = ( - 312CCB2DC09D5B5768B9F0C5EBBE7B7F /* Debug */, - 3B3EEE71082984CFE16C4ED515220340 /* Release */, + 2701251981CB7572B087089FBAFC2E9C /* Debug */, + 8295F8985B975ACD91E6E0F1CB34504A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-frameworks.sh index 338c2a9..4caf93d 100755 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-frameworks.sh @@ -1,15 +1,28 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -58,21 +71,40 @@ install_framework() fi } -# Copies the dSYM of a vendored framework +# Copies and strips a vendored dSYM install_dsym() { local source="$1" if [ -r "$source" ]; then - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}" + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi fi } # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" @@ -85,10 +117,18 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do + for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 @@ -98,6 +138,7 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-resources.sh b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-resources.sh index a7df440..fe3f9c7 100755 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-resources.sh +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -12,7 +20,7 @@ XCASSET_FILES=() # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") -case "${TARGETED_DEVICE_FAMILY}" in +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -92,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) @@ -102,5 +110,9 @@ then fi done <<<"$OTHER_XCASSETS" - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist" + fi fi diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.debug.xcconfig index e549a4b..054a507 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.debug.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables/SwiftDataTables.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables/SwiftDataTables.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "SwiftDataTables" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.release.xcconfig index e549a4b..054a507 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables/SwiftDataTables.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables/SwiftDataTables.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "SwiftDataTables" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-frameworks.sh index 88dd537..08e3eaa 100755 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-frameworks.sh @@ -1,15 +1,28 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -58,21 +71,40 @@ install_framework() fi } -# Copies the dSYM of a vendored framework +# Copies and strips a vendored dSYM install_dsym() { local source="$1" if [ -r "$source" ]; then - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}" + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi fi } # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" @@ -85,10 +117,18 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do + for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 @@ -98,6 +138,7 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-resources.sh index a7df440..fe3f9c7 100755 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-resources.sh +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -12,7 +20,7 @@ XCASSET_FILES=() # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") -case "${TARGETED_DEVICE_FAMILY}" in +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -92,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) @@ -102,5 +110,9 @@ then fi done <<<"$OTHER_XCASSETS" - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist" + fi fi diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.debug.xcconfig index 9400e65..af88056 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables/SwiftDataTables.framework/Headers" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables/SwiftDataTables.framework/Headers" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.release.xcconfig index 9400e65..af88056 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables/SwiftDataTables.framework/Headers" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables/SwiftDataTables.framework/Headers" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/SwiftDataTables/Info.plist b/Example/Pods/Target Support Files/SwiftDataTables/Info.plist old mode 100755 new mode 100644 index e475601..89a577b --- a/Example/Pods/Target Support Files/SwiftDataTables/Info.plist +++ b/Example/Pods/Target Support Files/SwiftDataTables/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.5.3 + 0.6.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/SwiftDataTables/SwiftDataTables.xcconfig b/Example/Pods/Target Support Files/SwiftDataTables/SwiftDataTables.xcconfig old mode 100755 new mode 100644 index 333997e..617ecda --- a/Example/Pods/Target Support Files/SwiftDataTables/SwiftDataTables.xcconfig +++ b/Example/Pods/Target Support Files/SwiftDataTables/SwiftDataTables.xcconfig @@ -1,9 +1,8 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftDataTables +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftDataTables GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/SwiftDataTables-Preview.gif b/Example/SwiftDataTables-Preview.gif old mode 100644 new mode 100755 diff --git a/Example/SwiftDataTables.xcodeproj/project.pbxproj b/Example/SwiftDataTables.xcodeproj/project.pbxproj index b5c0850..76290c1 100644 --- a/Example/SwiftDataTables.xcodeproj/project.pbxproj +++ b/Example/SwiftDataTables.xcodeproj/project.pbxproj @@ -7,11 +7,11 @@ objects = { /* Begin PBXBuildFile section */ + 0557FFCB20D18824003EC229 /* MenuTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0557FFCA20D18824003EC229 /* MenuTableViewController.swift */; }; 058D4BB71E954000002A2DC9 /* DataTableWithDataSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 058D4BB61E954000002A2DC9 /* DataTableWithDataSourceViewController.swift */; }; 05DDE6B11E71AF2C003BD61E /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05DDE6B01E71AF2C003BD61E /* File.swift */; }; 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; - 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; + 607FACD81AFB9204008FA782 /* DataTableWithDataSetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* DataTableWithDataSetViewController.swift */; }; 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; @@ -30,6 +30,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0557FFCA20D18824003EC229 /* MenuTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuTableViewController.swift; sourceTree = ""; }; 058D4BB21E953FDD002A2DC9 /* SwiftDataTables_Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwiftDataTables_Example-Bridging-Header.h"; sourceTree = ""; }; 058D4BB61E954000002A2DC9 /* DataTableWithDataSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataTableWithDataSourceViewController.swift; sourceTree = ""; }; 05DDE6B01E71AF2C003BD61E /* File.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; @@ -38,8 +39,7 @@ 607FACD01AFB9204008FA782 /* SwiftDataTables_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftDataTables_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 607FACD71AFB9204008FA782 /* DataTableWithDataSetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTableWithDataSetViewController.swift; sourceTree = ""; }; 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 607FACE51AFB9204008FA782 /* SwiftDataTables_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftDataTables_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -110,10 +110,9 @@ isa = PBXGroup; children = ( 607FACD51AFB9204008FA782 /* AppDelegate.swift */, - 05DDE6B01E71AF2C003BD61E /* File.swift */, - 607FACD71AFB9204008FA782 /* ViewController.swift */, + 0557FFCA20D18824003EC229 /* MenuTableViewController.swift */, + 607FACD71AFB9204008FA782 /* DataTableWithDataSetViewController.swift */, 058D4BB61E954000002A2DC9 /* DataTableWithDataSourceViewController.swift */, - 607FACD91AFB9204008FA782 /* Main.storyboard */, 607FACDC1AFB9204008FA782 /* Images.xcassets */, 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 607FACD31AFB9204008FA782 /* Supporting Files */, @@ -126,6 +125,7 @@ 607FACD31AFB9204008FA782 /* Supporting Files */ = { isa = PBXGroup; children = ( + 05DDE6B01E71AF2C003BD61E /* File.swift */, 607FACD41AFB9204008FA782 /* Info.plist */, ); name = "Supporting Files"; @@ -179,7 +179,6 @@ 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, C1F4B07C6EA72459DF082EA3 /* [CP] Embed Pods Frameworks */, - 855BB039995B8F9E4F867490 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -198,8 +197,6 @@ 607FACE11AFB9204008FA782 /* Sources */, 607FACE21AFB9204008FA782 /* Frameworks */, 607FACE31AFB9204008FA782 /* Resources */, - 2EBD8926E6AEF24D2277D527 /* [CP] Embed Pods Frameworks */, - AA9635340F76C918D37C30CD /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -218,18 +215,18 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; DevelopmentTeam = R85C7FUGTC; - LastSwiftMigration = 0820; + LastSwiftMigration = 0900; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; DevelopmentTeam = R85C7FUGTC; - LastSwiftMigration = 0820; + LastSwiftMigration = 0900; TestTargetID = 607FACCF1AFB9204008FA782; }; }; @@ -258,7 +255,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, ); @@ -274,64 +270,22 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2EBD8926E6AEF24D2277D527 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 67BFB49A58B50D68D8398584 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-SwiftDataTables_Tests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 855BB039995B8F9E4F867490 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - AA9635340F76C918D37C30CD /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftDataTables_Tests/Pods-SwiftDataTables_Tests-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; AECB81B0A442A283F03A29B7 /* [CP] Check Pods Manifest.lock */ = { @@ -340,13 +294,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-SwiftDataTables_Example-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; C1F4B07C6EA72459DF082EA3 /* [CP] Embed Pods Frameworks */ = { @@ -355,9 +312,12 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-SwiftDataTables_Example/Pods-SwiftDataTables_Example-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/SwiftDataTables/SwiftDataTables.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftDataTables.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -371,8 +331,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, + 607FACD81AFB9204008FA782 /* DataTableWithDataSetViewController.swift in Sources */, 05DDE6B11E71AF2C003BD61E /* File.swift in Sources */, + 0557FFCB20D18824003EC229 /* MenuTableViewController.swift in Sources */, 058D4BB71E954000002A2DC9 /* DataTableWithDataSourceViewController.swift in Sources */, 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, ); @@ -397,14 +358,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 607FACD91AFB9204008FA782 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 607FACDA1AFB9204008FA782 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { isa = PBXVariantGroup; children = ( @@ -428,12 +381,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -481,12 +436,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -531,7 +488,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "SwiftDataTables/SwiftDataTables_Example-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -551,7 +509,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "SwiftDataTables/SwiftDataTables_Example-Bridging-Header.h"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -574,7 +533,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -592,7 +552,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/Example/SwiftDataTables.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/SwiftDataTables.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 diff --git a/Example/SwiftDataTables.xcodeproj/xcshareddata/xcschemes/SwiftDataTables-Example.xcscheme b/Example/SwiftDataTables.xcodeproj/xcshareddata/xcschemes/SwiftDataTables-Example.xcscheme old mode 100644 new mode 100755 index aee718d..f3e1ea7 --- a/Example/SwiftDataTables.xcodeproj/xcshareddata/xcschemes/SwiftDataTables-Example.xcscheme +++ b/Example/SwiftDataTables.xcodeproj/xcshareddata/xcschemes/SwiftDataTables-Example.xcscheme @@ -1,6 +1,6 @@ Bool { - // Override point for customization after application launch. + let window = UIWindow(frame: UIScreen.main.bounds) + let instance = MenuViewController() + let navigationController = UINavigationController(rootViewController: instance) + self.navigationController = navigationController + window.rootViewController = navigationController + self.window = window + window.makeKeyAndVisible() return true } } - diff --git a/Example/SwiftDataTables/Base.lproj/LaunchScreen.xib b/Example/SwiftDataTables/Base.lproj/LaunchScreen.xib old mode 100644 new mode 100755 diff --git a/Example/SwiftDataTables/Base.lproj/Main.storyboard b/Example/SwiftDataTables/Base.lproj/Main.storyboard deleted file mode 100644 index 0bbe79d..0000000 --- a/Example/SwiftDataTables/Base.lproj/Main.storyboard +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/SwiftDataTables/DataTableWithDataSourceViewController.swift b/Example/SwiftDataTables/DataTableWithDataSourceViewController.swift old mode 100644 new mode 100755 diff --git a/Example/SwiftDataTables/File.swift b/Example/SwiftDataTables/File.swift old mode 100644 new mode 100755 diff --git a/Example/SwiftDataTables/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/SwiftDataTables/Images.xcassets/AppIcon.appiconset/Contents.json old mode 100644 new mode 100755 index d3942e9..19882d5 --- a/Example/SwiftDataTables/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/SwiftDataTables/Images.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", @@ -29,10 +39,15 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" } -} +} \ No newline at end of file diff --git a/Example/SwiftDataTables/Info.plist b/Example/SwiftDataTables/Info.plist old mode 100644 new mode 100755 index 81187dd..a9bc6fa --- a/Example/SwiftDataTables/Info.plist +++ b/Example/SwiftDataTables/Info.plist @@ -24,8 +24,6 @@ UILaunchStoryboardName LaunchScreen - UIMainStoryboardFile - Main UIRequiredDeviceCapabilities armv7 diff --git a/Example/SwiftDataTables/MenuTableViewController.swift b/Example/SwiftDataTables/MenuTableViewController.swift index 41314cc..67e073d 100644 --- a/Example/SwiftDataTables/MenuTableViewController.swift +++ b/Example/SwiftDataTables/MenuTableViewController.swift @@ -161,7 +161,7 @@ extension MenuViewController { extension MenuViewController { private func configurationWithoutFooter() -> DataTableConfiguration { var configuration = DataTableConfiguration() - configuration.shouldShowFooter = true + configuration.shouldShowFooter = false return configuration } } diff --git a/Example/SwiftDataTables/SwiftDataTables_Example-Bridging-Header.h b/Example/SwiftDataTables/SwiftDataTables_Example-Bridging-Header.h old mode 100644 new mode 100755 diff --git a/Example/SwiftDataTables/ViewController.swift b/Example/SwiftDataTables/ViewController.swift deleted file mode 100644 index f0dfea4..0000000 --- a/Example/SwiftDataTables/ViewController.swift +++ /dev/null @@ -1,72 +0,0 @@ -// -// ViewController.swift -// SwiftDataTables -// -// Created by pavankataria on 03/09/2017. -// Copyright (c) 2017 pavankataria. All rights reserved. -// - -// -// ViewController.swift -// SwiftDataTables -// -// Created by Pavan Kataria on 14/02/2017. -// Copyright © 2017 Pavan Kataria. All rights reserved. -// - -import UIKit -import SwiftDataTables - -class ViewController: UIViewController { - - var dataTable: SwiftDataTable! = nil - - override func viewDidLoad() { - - super.viewDidLoad() - - self.navigationController?.navigationBar.isTranslucent = false - self.title = "Employee Balances" - - self.view.backgroundColor = UIColor.white - - var options = DataTableConfiguration() - options.defaultOrdering = DataTableColumnOrder(index: 1, order: .ascending) - - self.dataTable = SwiftDataTable( - data: self.data(), - headerTitles: self.columnHeaders(), - options: options - ) - self.automaticallyAdjustsScrollViewInsets = false - - self.dataTable.backgroundColor = UIColor.init(red: 235/255, green: 235/255, blue: 235/255, alpha: 1) - - //25/255, green: 33/255, blue: 39/255, alpha: 1) - self.dataTable.autoresizingMask = [.flexibleWidth, .flexibleHeight] - self.dataTable.frame = self.view.frame - self.view.addSubview(self.dataTable); - } -} -extension ViewController { - func columnHeaders() -> [String] { - return [ - "Id", - "Name", - "Email", - "Number", - "City", - "Balance" - ] - } - - func data() -> [[DataTableValueType]]{ - //This would be your json object - let dataSet: [[Any]] = exampleDataSet() - return dataSet.map { - $0.flatMap { - return DataTableValueType($0) - } - } - } -} diff --git a/Example/Tests/Info.plist b/Example/Tests/Info.plist old mode 100644 new mode 100755 diff --git a/Example/Tests/Tests.swift b/Example/Tests/Tests.swift old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 5f8a474..664f360 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ https://img.shields.io/cocoapods/p/SwiftDataTables.svg --> [![Platform](https://img.shields.io/badge/%20%20Platform%20%20-iOS-brightgreen.svg?style=flat)](http://cocoapods.org/pods/SwiftDataTables) -[![Swift Version](https://img.shields.io/badge/%20%20Swift%20Version%20%20-3.0-brightgreen.svg?style=flat)](http://cocoapods.org/pods/SwiftDataTables) [![License](https://img.shields.io/badge/%20%20license%20%20-MIT-brightgreen.svg?style=flat)](http://cocoapods.org/pods/SwiftDataTables) +[![Swift Version](https://img.shields.io/badge/%20%20Swift%20Version%20%20-4.2-brightgreen.svg?style=flat)](http://cocoapods.org/pods/SwiftDataTables) [![License](https://img.shields.io/badge/%20%20license%20%20-MIT-brightgreen.svg?style=flat)](http://cocoapods.org/pods/SwiftDataTables) [![Version](https://img.shields.io/cocoapods/v/SwiftDataTables.svg?style=flat)](http://cocoapods.org/pods/SwiftDataTables) [![CocoaPodsDL](https://img.shields.io/cocoapods/dt/SwiftDataTables.svg)](https://cocoapods.org/pods/SwiftDataTables) -[![Carthage compatible](https://img.shields.io/badge/Carthage-Compatible-brightgreen.svg?style=flat)](https://github.com/Carthage/Carthage) + ## About @@ -18,25 +18,12 @@ https://img.shields.io/cocoapods/p/SwiftDataTables.svg ## Requirements -+ iOS 8.0 - iOS 11+ ++ iOS 8.0 - iOS 12.0 + + Xcode 9 -+ Swift 3 - -## Examples - -If you want to try it, simply run: -``` -pod try SwiftDataTables -``` -Or clone the repo and run `pod install` from the Example directory first. -Then open the workspace file `SwiftDataTables.xcworkspace`, and build & run the app. - -If you have any questions or wish to make any suggestions, please open an issue with the appropriate label, and I'll get back to you right away. Thank you ++ Swift 4 ## Installation -### Using Cocoapods - #### [CocoaPods] [CocoaPods]: http://cocoapods.org @@ -49,24 +36,16 @@ pod "SwiftDataTables" Then run `pod install` with CocoaPods 1.1.0.beta.1 or newer. +## Demo Project Included -### Using Carthage - -You can install Carthage with [Homebrew](http://brew.sh/) using the following command: - -```bash -$ brew update -$ brew install carthage -``` - -To integrate SwiftDataTables into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "pavankataria/SwiftDataTables" -``` - -Run `carthage update` to build the framework and drag the built `SwiftDataTables.framework` into your Xcode project. +To run the example project do the following: +1. Download or clone the repo (`git clone https://github.com/pavankataria/SwiftDataTables`) +2. Change directory into the `SwiftDataTables/Example` folder (`cd SwiftDataTables/Example`) +3. Install pod files (`pod install`) +4. With Xcode 8 installed, as normal, open the workspace file `SwiftDataTables.xcworkspace`, and not `SwiftDataTables.xcodeproj` +5. Build and Run. +If you have any questions or wish to make any suggestions, please open an issue with the appropriate label, and I'll get back to you right away. Thank you ## Author diff --git a/SwiftDataTables.podspec b/SwiftDataTables.podspec old mode 100644 new mode 100755 index c6c1476..cc63807 --- a/SwiftDataTables.podspec +++ b/SwiftDataTables.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'SwiftDataTables' - s.version = '0.6.1' + s.version = '0.6.11' s.summary = 'A Swift Data Table package that allows ordering, searching, and paging with extensible options.' # This description is used to generate tags and improve search results. @@ -21,13 +21,14 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/pavankataria/SwiftDataTables' - # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' + # s.screenshots = 'https://github.com/pavankataria/SwiftDataTables/raw/master/Example/SwiftDataTables-Preview.gif' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'pavankataria' => 'info@pavankataria.com' } s.source = { :git => 'https://github.com/pavankataria/SwiftDataTables.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/pavan_kataria' s.ios.deployment_target = '8.0' + s.pod_target_xcconfig = { 'SWIFT_VERSION' => '4.1' } s.source_files = 'SwiftDataTables/**/*' # Classes/**/*' diff --git a/SwiftDataTables/Classes/DataCell/DataCell.swift b/SwiftDataTables/Classes/DataCell/DataCell.swift old mode 100644 new mode 100755 index 4bf4ff1..4614dfc --- a/SwiftDataTables/Classes/DataCell/DataCell.swift +++ b/SwiftDataTables/Classes/DataCell/DataCell.swift @@ -16,5 +16,6 @@ class DataCell: UICollectionViewCell { //MARK: - Lifecycle func setup(_ viewModel: DataCellViewModel){ self.dataLabel.text = viewModel.data.stringRepresentation + self.contentView.backgroundColor = .white } } diff --git a/SwiftDataTables/Classes/DataCell/DataCell.xib b/SwiftDataTables/Classes/DataCell/DataCell.xib old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/DataCell/DataCellLayoutAttributes.swift b/SwiftDataTables/Classes/DataCell/DataCellLayoutAttributes.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/DataCell/DataCellViewModel.swift b/SwiftDataTables/Classes/DataCell/DataCellViewModel.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/DataStore.swift b/SwiftDataTables/Classes/DataStore.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/DataStructureModel.swift b/SwiftDataTables/Classes/DataStructureModel.swift old mode 100644 new mode 100755 index 0f91164..447c772 --- a/SwiftDataTables/Classes/DataStructureModel.swift +++ b/SwiftDataTables/Classes/DataStructureModel.swift @@ -65,7 +65,7 @@ public struct DataStructureModel { public func averageDataLengthForColumn( index: Int) -> Float { if self.shouldFitTitles { - return max(self.columnAverageContentLength[index], Float(self.headerTitles[index].characters.count)) + return max(self.columnAverageContentLength[index], Float(self.headerTitles[index].count)) } return self.columnAverageContentLength[index] } @@ -77,7 +77,7 @@ public struct DataStructureModel { for column in Array(0.. Generator.Element? { + subscript (safe index: Index) -> Iterator.Element? { return indices.contains(index) ? self[index] : nil } } diff --git a/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.swift b/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.swift old mode 100644 new mode 100755 index f796e1f..8b50063 --- a/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.swift +++ b/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.swift @@ -27,16 +27,8 @@ class DataHeaderFooter: UICollectionReusableView { func setup(viewModel: DataHeaderFooterViewModel) { self.titleLabel.text = viewModel.data self.sortingImageView.image = viewModel.imageForSortingElement - -// viewModel.modelUpdated = { [weak self] viewModel in -// self?.update(viewModel: viewModel) -// } + self.backgroundColor = .white } - -// public func update(viewModel: DataHeaderFooterViewModel){ -// self.sortingImageView.image = UIImage(named: viewModel.imageForSortingElement ?? "") -// } - @objc func didTapView(){ self.didTapEvent?() } diff --git a/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.xib b/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooter.xib old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooterViewModel.swift b/SwiftDataTables/Classes/HeaderFooter/DataHeaderFooterViewModel.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeader.swift b/SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeader.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeader.xib b/SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeader.xib old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeaderViewModel.swift b/SwiftDataTables/Classes/MenuLengthHeader/MenuLengthHeaderViewModel.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/PaginationHeader/PaginationHeader.swift b/SwiftDataTables/Classes/PaginationHeader/PaginationHeader.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/PaginationHeader/PaginationHeader.xib b/SwiftDataTables/Classes/PaginationHeader/PaginationHeader.xib old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/PaginationHeader/PaginationHeaderViewModel.swift b/SwiftDataTables/Classes/PaginationHeader/PaginationHeaderViewModel.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/Protocols/CollectionViewCellRepresentable.swift b/SwiftDataTables/Classes/Protocols/CollectionViewCellRepresentable.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/Protocols/CollectionViewSupplementaryElementRepresentable.swift b/SwiftDataTables/Classes/Protocols/CollectionViewSupplementaryElementRepresentable.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/Protocols/DataCellRowRepresentable.swift b/SwiftDataTables/Classes/Protocols/DataCellRowRepresentable.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/Protocols/VirtualPositionTrackable.swift b/SwiftDataTables/Classes/Protocols/VirtualPositionTrackable.swift old mode 100644 new mode 100755 diff --git a/SwiftDataTables/Classes/SwiftDataTable.swift b/SwiftDataTables/Classes/SwiftDataTable.swift old mode 100644 new mode 100755 index cac7a2e..5985be1 --- a/SwiftDataTables/Classes/SwiftDataTable.swift +++ b/SwiftDataTables/Classes/SwiftDataTable.swift @@ -93,7 +93,6 @@ public class SwiftDataTable: UIView { collectionView.backgroundColor = UIColor.clear collectionView.allowsMultipleSelection = true collectionView.dataSource = self - collectionView.delegate = self if #available(iOS 10, *) { collectionView.isPrefetchingEnabled = false } @@ -106,11 +105,11 @@ public class SwiftDataTable: UIView { public override func layoutSubviews() { super.layoutSubviews() let searchBarHeight = self.heightForSearchView() - self.searchBar.frame = CGRect.init(x: 0, y: 0, width: self.bounds.width, height: searchBarHeight) - self.collectionView.frame = CGRect.init(x: 0, y: searchBarHeight, width: self.bounds.width, height: self.bounds.height-searchBarHeight) + self.searchBar.frame = CGRect(x: 0, y: 0, width: self.bounds.width, height: searchBarHeight) + self.collectionView.frame = CGRect(x: 0, y: searchBarHeight, width: self.bounds.width, height: self.bounds.height-searchBarHeight) } - fileprivate(set) var layout: SwiftDataTableFlowLayout? = nil { + fileprivate(set) var layout: SwiftDataTableLayout? = nil { didSet { if let layout = layout { self.collectionView.collectionViewLayout = layout @@ -218,7 +217,7 @@ public class SwiftDataTable: UIView { func registerObservers(){ NotificationCenter.default.addObserver(self, selector: #selector(deviceOrientationWillChange), name: Notification.Name.UIApplicationWillChangeStatusBarOrientation, object: nil) } - func deviceOrientationWillChange() { + @objc func deviceOrientationWillChange() { self.layout?.clearLayoutCache() } @@ -249,7 +248,7 @@ public class SwiftDataTable: UIView { self.calculateColumnWidths() self.applyOptions(options) if(shouldReplaceLayout){ - self.layout = SwiftDataTableFlowLayout(dataTable: self) + self.layout = SwiftDataTableLayout(dataTable: self) } } @@ -373,8 +372,6 @@ public extension SwiftDataTable { // } } -extension SwiftDataTable: UICollectionViewDelegateFlowLayout { -} extension SwiftDataTable: UICollectionViewDataSource { @@ -627,7 +624,9 @@ extension SwiftDataTable { func shouldShowSearchSection() -> Bool { return true } - + func shouldShowFooterSection() -> Bool { + return self.options.shouldShowFooter + } func shouldShowPaginationSection() -> Bool { return false } @@ -678,7 +677,7 @@ extension SwiftDataTable { } func minimumHeaderColumnWidth(index: Int) -> CGFloat { - return CGFloat(self.pixelsPerCharacter() * CGFloat(self.dataStructure.headerTitles[index].characters.count)) + return CGFloat(self.pixelsPerCharacter() * CGFloat(self.dataStructure.headerTitles[index].count)) } //There should be an automated way to retrieve the font size of the cell @@ -819,7 +818,7 @@ extension SwiftDataTable: UISearchBarDelegate { extension SwiftDataTable { func set(options: DataTableConfiguration? = nil){ - self.layout = SwiftDataTableFlowLayout(dataTable: self) + self.layout = SwiftDataTableLayout(dataTable: self) self.rowViewModels = DataTableViewModelContent() self.paginationViewModel = PaginationHeaderViewModel() self.menuLengthViewModel = MenuLengthHeaderViewModel() diff --git a/SwiftDataTables/Classes/SwiftDataTableFlowLayout.swift b/SwiftDataTables/Classes/SwiftDataTableFlowLayout.swift deleted file mode 100644 index 13ca394..0000000 --- a/SwiftDataTables/Classes/SwiftDataTableFlowLayout.swift +++ /dev/null @@ -1,344 +0,0 @@ -// -// SwiftDataTableFlowLayout.swift -// SwiftDataTables -// -// Created by Pavan Kataria on 21/02/2017. -// Copyright © 2017 Pavan Kataria. All rights reserved. -// - -import UIKit - -class SwiftDataTableFlowLayout: UICollectionViewFlowLayout { - - //MARK: - Properties - fileprivate(set) open var dataTable: SwiftDataTable! - var insertedIndexPaths = NSMutableArray() - var removedIndexPaths = NSMutableArray() - var insertedSectionIndices = NSMutableArray() - var removedSectionIndices = NSMutableArray() - - private var cache = [UICollectionViewLayoutAttributes]() - private var filteredCache = [UICollectionViewLayoutAttributes]() -// private var filteredCache = [UICollectionViewLayoutAttributes]() - - //MARK: - Lifecycle - init(dataTable: SwiftDataTable){ - self.dataTable = dataTable - super.init() -// self.collectionView?.isPrefetchingEnabled = false; - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public func clearLayoutCache(){ - self.cache.removeAll() - } - - public override func prepare(){ - super.prepare() - - guard self.cache.isEmpty else { - return - } - self.dataTable.calculateColumnWidths() - //let methodStart = Date() - - var xOffsets = [CGFloat]() - var yOffsets = [CGFloat]() - - //Reduces the computation by working out one column - for column in 0.. [UICollectionViewLayoutAttributes]? { - - //Item Cells - var attributes = self.cache.filter{ $0.frame.intersects(rect) } - -// //MARK: Search Header -// if self.dataTable.shouldShowSearchSection(){ -// let menuLengthIndexPath = IndexPath(index: 0) -// if let menuLengthAttributes = self.layoutAttributesForSupplementaryView(ofKind: -// SwiftDataTable.SupplementaryViewType.searchHeader.rawValue, at: menuLengthIndexPath){ -// attributes.append(menuLengthAttributes) -// } -// } - - //MARK: Column Headers - for i in 0.. Bool { - return true - } -} - -//MARK: - Layout Attributes For Elements And Supplmentary Views -extension SwiftDataTableFlowLayout { - override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath) - let initialRowYPosition = /*self.dataTable.heightForSearchView() + */self.dataTable.heightForSectionHeader() - - let x: CGFloat = Array(0.. UICollectionViewLayoutAttributes? { - let kind = SwiftDataTable.SupplementaryViewType(kind: elementKind) - switch kind { - case .searchHeader: return self.layoutAttributesForHeaderView(at: indexPath) - case .columnHeader: return self.layoutAttributesForColumnHeaderView(at: indexPath) - case .footerHeader: return self.layoutAttributesForColumnFooterView(at: indexPath) - case .paginationHeader: return self.layoutAttributesForPaginationView(at: indexPath) - } - } - - func layoutAttributesForHeaderView(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - let attribute = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: SwiftDataTable.SupplementaryViewType.searchHeader.rawValue, with: indexPath) - let x: CGFloat = self.dataTable.collectionView.contentOffset.x - let y: CGFloat = 0 - let width = self.dataTable.collectionView.bounds.width - let height: CGFloat = 0//self.dataTable.heightForSearchView() - - attribute.frame = CGRect( - x: max(0, x), - y: max(0, y), - width: width, - height: height - ) - attribute.zIndex = 5 - - if self.dataTable.shouldSearchHeaderFloat(){ - let yOffsetTopView: CGFloat = self.dataTable.collectionView.contentOffset.y - attribute.frame.origin.y = yOffsetTopView - attribute.zIndex += 1 - } - return attribute - } - - func layoutAttributesForColumnHeaderView(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - let attribute = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: SwiftDataTable.SupplementaryViewType.columnHeader.rawValue, with: indexPath) - //Because the widths can change between columns we need to get a running total for the x position so far up - //until the currnt column header. - let x = Array(0.. UICollectionViewLayoutAttributes? { - let attribute = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: SwiftDataTable.SupplementaryViewType.footerHeader.rawValue, with: indexPath) - - let width = self.dataTable.widthForColumn(index: indexPath.index) - let height = self.dataTable.heightForSectionFooter() - - let x = Array(0.. UICollectionViewLayoutAttributes? { - let attribute = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: SwiftDataTable.SupplementaryViewType.paginationHeader.rawValue, with: indexPath) - - let x: CGFloat = self.dataTable.collectionView.contentOffset.x - let y: CGFloat = 0 - - let width = self.dataTable.collectionView.bounds.width - let height = self.dataTable.heightForPaginationView() - - attribute.frame = CGRect( - x: max(0, x), - y: max(0, y), - width: width, - height: height - ) - attribute.zIndex = 5 - - if self.dataTable.shouldSectionHeadersFloat(){ - let yOffsetBottomView: CGFloat = self.dataTable.collectionView.contentOffset.y + self.dataTable.collectionView.bounds.height - height // - height - attribute.frame.origin.y = yOffsetBottomView - attribute.zIndex += 1 - } - - return attribute - } -} - -//MARK: - Insertions and deletions -//extension SwiftDataTableFlowLayout { -// override func prepare(forCollectionViewUpdates updateItems: [UICollectionViewUpdateItem]) { -// super.prepare(forCollectionViewUpdates: updateItems) -// -// self.insertedIndexPaths = NSMutableArray() -// self.removedIndexPaths = NSMutableArray() -// self.insertedSectionIndices = NSMutableArray() -// self.removedSectionIndices = NSMutableArray() -// -// for (index, updateItem) in updateItems.enumerated() { -// switch updateItem.updateAction { -// case .insert: -// guard let indexPathAfterUpdate = updateItem.indexPathAfterUpdate else { -// break -// } -// if indexPathAfterUpdate.item == NSNotFound { -// self.insertedSectionIndices.add(NSNumber(value: indexPathAfterUpdate.section)) -// } -// else { -// self.insertedIndexPaths.add(indexPathAfterUpdate) -// } -// case .delete: -// guard let indexPathBeforeUpdate = updateItem.indexPathBeforeUpdate else { -// break -// } -// if indexPathBeforeUpdate.item == NSNotFound { -// self.removedSectionIndices.add(NSNumber(value: indexPathBeforeUpdate.section)) -// } -// else { -// self.removedIndexPaths.add(indexPathBeforeUpdate) -// } -// default: -// break -// } -// } -// -// print("insertedIndexPaths: \(self.insertedIndexPaths)") -// print("removedIndexPaths: \(self.removedIndexPaths)") -// print("insertedSectionIndices: \(self.insertedSectionIndices)") -// print("removedSectionIndices: \(self.removedSectionIndices)") -// } -//} diff --git a/SwiftDataTables/SwiftDataTables.bundle/column-sort-ascending.png b/SwiftDataTables/SwiftDataTables.bundle/column-sort-ascending.png old mode 100644 new mode 100755 diff --git a/SwiftDataTables/SwiftDataTables.bundle/column-sort-descending.png b/SwiftDataTables/SwiftDataTables.bundle/column-sort-descending.png old mode 100644 new mode 100755 diff --git a/SwiftDataTables/SwiftDataTables.bundle/column-sort-unspecified.png b/SwiftDataTables/SwiftDataTables.bundle/column-sort-unspecified.png old mode 100644 new mode 100755