diff --git a/.jazzy.yaml b/.jazzy.yaml index 0aef0a6..e3302c4 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -1,7 +1,7 @@ author_name: Daniel Thorpe author_url: http://danthorpe.me module_name: Money -module_version: 1.5.0 +module_version: 1.5.1 github_url: https://github.com/danthorpe/Money readme: README.md podspec: Money.podspec diff --git a/CHANGELOG.md b/CHANGELOG.md index a7d14dd..15e296f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 1.5.1 +Cleans up a few issues related to updating to the latest Carthage, and the example project. + +# 1.5.0 +1. [[MNY-38](https://github.com/danthorpe/Money/pull/38)]: Removes the FX functionality from this framework. + # 1.4.2 1. [[MNY-39](https://github.com/danthorpe/Money/pull/30)]: Updates to the latest version of [Result](https://github.com/antitypical/Result/releases/tag/1.0.1) dependency. Thanks to [@mrdavey](https://github.com/mrdavey) and [@hsoi](https://github.com/hsoi) for spotting this! diff --git a/Examples/Custom Money/Custom Money/Currencies.swift b/Examples/Custom Money/Custom Money/Currencies.swift index e79be0f..5a504a4 100644 --- a/Examples/Custom Money/Custom Money/Currencies.swift +++ b/Examples/Custom Money/Custom Money/Currencies.swift @@ -51,6 +51,9 @@ extension Currency { typealias Hearts = _Money typealias Bees = _Money + +/** - This would require the FX module + class BankRates { static func quoteForBase(base: String, counter: String) -> FXQuote { @@ -93,3 +96,5 @@ class Bank.fx(hearts).counter + bees +/** - This would require importing MoneyFX instead + let total = Bank.fx(hearts).counter + bees print("Exchanging your \(hearts) into \(Currency.Bee.symbol) via the bank gives you \(total) in total.") + +*/ } } diff --git a/Examples/Custom Money/Podfile.lock b/Examples/Custom Money/Podfile.lock index 653763a..ee84530 100644 --- a/Examples/Custom Money/Podfile.lock +++ b/Examples/Custom Money/Podfile.lock @@ -1,11 +1,7 @@ PODS: - - Money (1.4.1): - - Result - - SwiftyJSON + - Money (1.5.1): - ValueCoding - - Result (1.0.1) - - SwiftyJSON (2.3.2) - - ValueCoding (1.1.1) + - ValueCoding (1.2.0) DEPENDENCIES: - Money (from `../../`) @@ -15,9 +11,7 @@ EXTERNAL SOURCES: :path: "../../" SPEC CHECKSUMS: - Money: 5f822a7b435ab6f07af599f0d0e40786732364ad - Result: caef80340451e1f07492fa1e89117f83613bce24 - SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a - ValueCoding: c693457b32175c1e468b3fd838cb021100a63e71 + Money: b3939e8ec686118a6525fe2ff4bed5e55af4a0e1 + ValueCoding: e2f7d8fee288debd762b655a8e0ba933985a6b57 COCOAPODS: 0.39.0 diff --git a/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json b/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json index 04f34d4..2c73f8c 100644 --- a/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json +++ b/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json @@ -1,6 +1,6 @@ { "name": "Money", - "version": "1.4.1", + "version": "1.5.1", "summary": "Swift types for working with Money.", "description": "Money is a Swift cross platform framework for iOS, watchOS, tvOS and OS X. \n\nIt provides types and functionality to help represent and manipulate money \nand currency related information.", "homepage": "https://github.com/danthorpe/Money", @@ -10,10 +10,10 @@ }, "source": { "git": "https://github.com/danthorpe/Money.git", - "tag": "1.4.1" + "tag": "1.5.1" }, "module_name": "Money", - "documentation_url": "http://docs.danthorpe.me/money/1.4.1/index.html", + "documentation_url": "http://docs.danthorpe.me/money/1.5.1/index.html", "social_media_url": "https://twitter.com/danthorpe", "requires_arc": true, "platforms": { @@ -45,12 +45,6 @@ "dependencies": { "ValueCoding": [ - ], - "Result": [ - - ], - "SwiftyJSON": [ - ] } } diff --git a/Examples/Custom Money/Pods/Manifest.lock b/Examples/Custom Money/Pods/Manifest.lock index 653763a..ee84530 100644 --- a/Examples/Custom Money/Pods/Manifest.lock +++ b/Examples/Custom Money/Pods/Manifest.lock @@ -1,11 +1,7 @@ PODS: - - Money (1.4.1): - - Result - - SwiftyJSON + - Money (1.5.1): - ValueCoding - - Result (1.0.1) - - SwiftyJSON (2.3.2) - - ValueCoding (1.1.1) + - ValueCoding (1.2.0) DEPENDENCIES: - Money (from `../../`) @@ -15,9 +11,7 @@ EXTERNAL SOURCES: :path: "../../" SPEC CHECKSUMS: - Money: 5f822a7b435ab6f07af599f0d0e40786732364ad - Result: caef80340451e1f07492fa1e89117f83613bce24 - SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a - ValueCoding: c693457b32175c1e468b3fd838cb021100a63e71 + Money: b3939e8ec686118a6525fe2ff4bed5e55af4a0e1 + ValueCoding: e2f7d8fee288debd762b655a8e0ba933985a6b57 COCOAPODS: 0.39.0 diff --git a/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj b/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj index ce7f2d1..6df2848 100644 --- a/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj +++ b/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj @@ -7,215 +7,156 @@ objects = { /* Begin PBXBuildFile section */ - 038C8E58B7B9DAFF0FD566A7007611B4 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2CDFCF407B3970A3F2FD3C19CCA4CE7 /* SwiftyJSON-dummy.m */; }; - 0729C5D8206CD9778B09748985945980 /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08BC67A546C2AFC811EEBC0A3EA3D057 /* Bitcoin.swift */; }; - 09F8C9409DF28C51561C0D4BCBDB7426 /* Pods-Custom Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D3CEE659D9C1D3DEA521E896D331964 /* Pods-Custom Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0DEB71230E556C519D20B52B81856183 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77FD247247D6D3CDBF638A9DB0EBDB4E /* SwiftyJSON.framework */; }; - 15A05B248F68888003FEABA47768DE1D /* ResultType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F003A917BF6D1C4FBA4D94B06C30179 /* ResultType.swift */; }; - 236F3967A7690DD0C6FA01C8F896E602 /* ValueCoding-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E593BAC0D422045A94607A9C0A277E /* ValueCoding-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 25A9EA2A9FE60984C5E94D0B6D65B3A5 /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0216247E5703DEFCB395822BEDEDB978 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2A9D3A5C8B3A63A8E0A83B9D201CE495 /* Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8689B0915191F6FC3B6A0628A6CB5D71 /* Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2BB379DF9ADAE615B5B854B0D09A84B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - 2D28051F1BDF7ADC153BFE8B89FBD9C9 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F4E5AA87C3A971A927D7266A03C6007 /* Yahoo.swift */; }; - 35575A63DB40EB8EC8BFD8189093A5DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - 38B27E2E94FCEAD56BED62B563CA0EC6 /* Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C22C68F5162837507ABB2E5CBA7243A /* Money-dummy.m */; }; - 428563C265D3F5B67D83A2473C70660F /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CDB0B04066D7BD85C7774722D584516 /* Support.swift */; }; - 46B661B9D41457BFE21F2618E7CCC4E0 /* Pods-Custom Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9600516FB0E389F99DD6A409A89CA451 /* Pods-Custom Money-dummy.m */; }; - 55F59EF2FEC2FEE3BC277F4BA1D4F09A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - 591176D28A122FFA17E011864A776993 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCB9149D7C1AAA968AE461BDB9D1EEE8 /* Result.swift */; }; - 5949E7BCFC6C1C7E8C45060A34A6F716 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FFDF2554FD50F0FE48999A0C3ED4901 /* Currency.swift */; }; - 604C3EF6EBD60E420F79C960C0FFE3F3 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65BA58A579BB1C7C57F7BB981A00EE3B /* Autogenerated.swift */; }; - 6147CF51A602C3FCA8FEDE84877B7ACD /* ValueCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5BC5B78EBB608AE95556AC64F2F724 /* ValueCoding.swift */; }; - 6DB484443FAE1B97626FAAB91D9E7BF6 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F158272DDE3E68231F6FE2A3DEB56C4E /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 70F55C50ABEB92E976EE1CB30E2A47AC /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E62925B3150C7C3667A39618DC790FEE /* NSDecimalNumberExtensions.swift */; }; - 7728D251CE689827DF8E05558D72C81E /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F2976F6779F80CE007235A83876CE7 /* Result-dummy.m */; }; - 78C32312A383054CE163CB56EB4A6D48 /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31FCA3CC32B1FFB7E577A3FD7C8BDC8 /* SwiftyJSON.swift */; }; - 7FBF37C99152E404ECA674EFB04AF389 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AC61CD09C9146602035B3FAD8286E8 /* NSDecimalExtensions.swift */; }; - 8248BB0527F89719F6C82AED4222C9F6 /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB4E53658C315D2C1DA1EF7648011CE /* DecimalNumberType.swift */; }; - 9274FF433AB9B56CF48FC7288EF9325F /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5930B31AFF68C5977278446CDA62117 /* FX.swift */; }; - A4FD35EB1940F9886E10B10616AB28C1 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96019E6C4F5442A1E3808A4FE6F16AC7 /* Decimal.swift */; }; - A561B627943D37C46AB4D233F70A4DCB /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4AAAAC72DECF91163331BFCDD583341 /* Money.swift */; }; - C5B2410FDFA66FDB0ED18EBBD613011B /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C29D8E4CA9E4CF9452CBCB9F8D56071 /* ValueCoding.framework */; }; - C99613480BF41E01DBBCC5EC99AC5205 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1FC653D131B20022B75023F33F250B9 /* Result.framework */; }; - CE1689402744CCE280B0F756DA50ECF3 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A7BDAF606BBEA6690D697164B25D64 /* ApplePay.swift */; }; - D5EDA42C7061FECC68057157E8E8E72E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - DBC86ECB83D8397B20E057F9BF037D81 /* Locale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B6F31F259C914449AFEB191BD7477F /* Locale.swift */; }; - DE8442956EAF8484B2A954CE7327FA3B /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C8568ADB63EDF92989E900A1D6364DF /* OpenExchangeRates.swift */; }; - E9B5A442515061359B42AD145087D2CB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - F4B434FCD7E72D2F15FBE1EA3D4863D6 /* ValueCoding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E95FBF4C047EA6401BB7B12E42A8B7 /* ValueCoding-dummy.m */; }; + 0BB1D7DC86AF7A27E217FA967D166FDE /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E845BEE55854CFF558172C1C2537C56 /* Support.swift */; }; + 1B2C5B155FD9576F36DBDD378BF35CA2 /* Locale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13390C2B50CCFAD30AA3185211BA033F /* Locale.swift */; }; + 1FFC5F9C4DC3AC6A965F4CA02F4EABA7 /* ValueCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16E5D033D4E56FCCDA51AF4B82E8833B /* ValueCoding.swift */; }; + 2B3F00C1A99FA65559FD9D556FD82DEB /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C601B05E31125EBFE771678B9EF52 /* Currency.swift */; }; + 3724442DD3210CD39C0D04ECC00A3D31 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2AD72B9E4878BB0875BBC705D8EE51 /* Autogenerated.swift */; }; + 56B81E40E7225F8A3CFAAC50B96747E3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83D9AFDFB742C56E022B4AA0CDC158F /* Foundation.framework */; }; + 6A51C615EBA79FCB378018F0C848F5FE /* ValueCoding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD1C6097856C892660CC2D780125AEFB /* ValueCoding-dummy.m */; }; + 75D3B4AE3788BA3D1AE9885E9C9E6E82 /* Pods-Custom Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9600516FB0E389F99DD6A409A89CA451 /* Pods-Custom Money-dummy.m */; }; + 78E45678E3EBA8C181CF2CEA04307659 /* Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8689B0915191F6FC3B6A0628A6CB5D71 /* Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 97F2C30620812AEEF914A1D4197C4ECE /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C4C3723005BF9BD71F48209715A3B5 /* Bitcoin.swift */; }; + A7FE509526C5C34C71DEAA3A1910BED9 /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6472CDE547C6BD52B866F28EBA1A77EE /* NSDecimalNumberExtensions.swift */; }; + AB25D7F606B76DF54BB019AD6925B0D6 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEC6AB3C9983B456BEC89D265001476D /* NSDecimalExtensions.swift */; }; + AC9FEF5458563CEF3A8F5817E9CE8398 /* Pods-Custom Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D3CEE659D9C1D3DEA521E896D331964 /* Pods-Custom Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BEC37EB752772C5BBF653A4A1D7F0AC4 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41899C22A0000BC7587BEAC904F5CD95 /* Decimal.swift */; }; + C2BA97C228030775ABC83F6396CABCB1 /* ValueCoding-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C3D2F3409B96C2E5BED5ECF6463637E7 /* ValueCoding-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C4E4CE3E880017017A4B48D5CCFC638B /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 490CCA5C7A0E21DE18802A0FC35C4372 /* DecimalNumberType.swift */; }; + CBC69EB44CFE76D9E5041FCF08D0E011 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83D9AFDFB742C56E022B4AA0CDC158F /* Foundation.framework */; }; + CF6266B34B34933D7C0F69971B53ADDB /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A7BDAF606BBEA6690D697164B25D64 /* ApplePay.swift */; }; + E744B80B1F5A07DB3756F4C58926DA27 /* Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C22C68F5162837507ABB2E5CBA7243A /* Money-dummy.m */; }; + EC27F4A4DE420EC11BBF4E3F873FF55B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83D9AFDFB742C56E022B4AA0CDC158F /* Foundation.framework */; }; + F2CD323787952EBDAB8D1BFE25A1E901 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19D69FDBAF421094211FAC6684DEA4A /* Money.swift */; }; + FA658B0930DC1FD47F6B1E1DE851D06A /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF15F79E6A81866AB72533004E067E26 /* ValueCoding.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1DFE2A02B5C6BDFE88F8CA3DFB0FC286 /* PBXContainerItemProxy */ = { + 7508ABB172281CBD4726F6E5BE2A3967 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 3347657561F4F3F50CD418F62B4DC36A; - remoteInfo = Money; - }; - 36023380F037B6AB8D4492DCA3A27CD5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 21908E9D85EA98581A510FE95B15E420; - remoteInfo = SwiftyJSON; - }; - 3908484531EEE6859A81940C9B59CFE0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 69E2A071A4F7A31B2F519FD88AF71F04; - remoteInfo = Result; - }; - 41F272EA7F75CA2CEBC8E35579A501C9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 69E2A071A4F7A31B2F519FD88AF71F04; - remoteInfo = Result; - }; - 689A35B712A787B3B95896681D00CC01 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 71F9C95AC48B3432BDA235BBD238AE94; + remoteGlobalIDString = 145A9F3DB68CB80ACFF30D6C4E013D46; remoteInfo = ValueCoding; }; - A8D7D5C5D4B2B0DBEA7CD9A1C6CA1131 /* PBXContainerItemProxy */ = { + 950F7FE10BCA8FFAEC8ED0B3C5E64C47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 71F9C95AC48B3432BDA235BBD238AE94; - remoteInfo = ValueCoding; + remoteGlobalIDString = 5987C803818DB2CBEAB2317CF1754330; + remoteInfo = Money; }; - CE9631D32B8258D2F370FFAFA009EA36 /* PBXContainerItemProxy */ = { + D05B804F17E203D12A32956058419ED7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 21908E9D85EA98581A510FE95B15E420; - remoteInfo = SwiftyJSON; + remoteGlobalIDString = 145A9F3DB68CB80ACFF30D6C4E013D46; + remoteInfo = ValueCoding; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0216247E5703DEFCB395822BEDEDB978 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; - 08BC67A546C2AFC811EEBC0A3EA3D057 /* Bitcoin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Bitcoin.swift; sourceTree = ""; }; + 04C4C3723005BF9BD71F48209715A3B5 /* Bitcoin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Bitcoin.swift; sourceTree = ""; }; 09A7BDAF606BBEA6690D697164B25D64 /* ApplePay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ApplePay.swift; sourceTree = ""; }; - 0DA8BD07E1098E205AF45D501594137C /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Result.modulemap; sourceTree = ""; }; - 1CDB0B04066D7BD85C7774722D584516 /* Support.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; }; - 1DADDD5C59FCA27235ACA32605BD1527 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; + 0F2AD72B9E4878BB0875BBC705D8EE51 /* Autogenerated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Autogenerated.swift; sourceTree = ""; }; + 13390C2B50CCFAD30AA3185211BA033F /* Locale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Locale.swift; sourceTree = ""; }; + 16E5D033D4E56FCCDA51AF4B82E8833B /* ValueCoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValueCoding.swift; path = ValueCoding/ValueCoding.swift; sourceTree = ""; }; + 1C6E95301D4D870CC657C84CF6E99969 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 2E845BEE55854CFF558172C1C2537C56 /* Support.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; }; 3946E597A9D0AC3D75CAFD24BDAFD80E /* Money-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Money-prefix.pch"; sourceTree = ""; }; 3D3CEE659D9C1D3DEA521E896D331964 /* Pods-Custom Money-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Custom Money-umbrella.h"; sourceTree = ""; }; - 3D699C1DA947CA5DBF82BE8927112AC0 /* ValueCoding.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ValueCoding.modulemap; sourceTree = ""; }; - 3F972EB6AED7000E61962C751DD7165D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; - 4F003A917BF6D1C4FBA4D94B06C30179 /* ResultType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultType.swift; path = Result/ResultType.swift; sourceTree = ""; }; - 4FFDF2554FD50F0FE48999A0C3ED4901 /* Currency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Currency.swift; sourceTree = ""; }; - 50DFB978AB699248C726E034F1B3B42F /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5C29D8E4CA9E4CF9452CBCB9F8D56071 /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5F4E5AA87C3A971A927D7266A03C6007 /* Yahoo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Yahoo.swift; sourceTree = ""; }; - 65BA58A579BB1C7C57F7BB981A00EE3B /* Autogenerated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Autogenerated.swift; sourceTree = ""; }; - 65E593BAC0D422045A94607A9C0A277E /* ValueCoding-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ValueCoding-umbrella.h"; sourceTree = ""; }; + 410C601B05E31125EBFE771678B9EF52 /* Currency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Currency.swift; sourceTree = ""; }; + 41899C22A0000BC7587BEAC904F5CD95 /* Decimal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Decimal.swift; sourceTree = ""; }; + 490CCA5C7A0E21DE18802A0FC35C4372 /* DecimalNumberType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DecimalNumberType.swift; sourceTree = ""; }; + 6472CDE547C6BD52B866F28EBA1A77EE /* NSDecimalNumberExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberExtensions.swift; sourceTree = ""; }; 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Money.xcconfig; sourceTree = ""; }; 6C22C68F5162837507ABB2E5CBA7243A /* Money-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Money-dummy.m"; sourceTree = ""; }; - 71224125016483CBA4B84EA93DFD15CB /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7213835428667BBA6B07743E6F4B8121 /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7493F7F104BA60971A5E0230D9A9DAFC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ValueCoding.xcconfig; sourceTree = ""; }; - 77FD247247D6D3CDBF638A9DB0EBDB4E /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D56F281EDF6E7A4ED5627141F4E4DA2 /* Pods_Custom_Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Custom_Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C2CCEE8C72DE73CB82FB24576B1832D /* ValueCoding.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ValueCoding.modulemap; sourceTree = ""; }; 83480F8F94E599798D9FFD36B467F76C /* Money.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Money.modulemap; sourceTree = ""; }; - 84B6F31F259C914449AFEB191BD7477F /* Locale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Locale.swift; sourceTree = ""; }; - 85AC61CD09C9146602035B3FAD8286E8 /* NSDecimalExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalExtensions.swift; sourceTree = ""; }; 8689B0915191F6FC3B6A0628A6CB5D71 /* Money-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Money-umbrella.h"; sourceTree = ""; }; - 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 94291E74B2ABBA056AD28AD1873DD8E3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 929E2636E2B7609704F1838F5FFEDCD7 /* ValueCoding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ValueCoding-prefix.pch"; sourceTree = ""; }; 946FC5A04C491594712C2DB0468A8E59 /* Pods-Custom Money-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Custom Money-frameworks.sh"; sourceTree = ""; }; 9600516FB0E389F99DD6A409A89CA451 /* Pods-Custom Money-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Custom Money-dummy.m"; sourceTree = ""; }; - 96019E6C4F5442A1E3808A4FE6F16AC7 /* Decimal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Decimal.swift; sourceTree = ""; }; 9678D4111A5AF8A6BB307124E11DCA92 /* Pods-Custom Money-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Custom Money-resources.sh"; sourceTree = ""; }; - 9C8568ADB63EDF92989E900A1D6364DF /* OpenExchangeRates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OpenExchangeRates.swift; sourceTree = ""; }; - 9F8525B17F44112BA10D136F7F6C4089 /* ValueCoding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ValueCoding-prefix.pch"; sourceTree = ""; }; - A26E7BC45299526E4063BB4C61816580 /* Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A2F79DED6A9E3EE0A847EFADEBDEB815 /* Pods_Custom_Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Custom_Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A6DD5137FE8F22C2424D946F7E8D8D68 /* Pods-Custom Money-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Custom Money-acknowledgements.markdown"; sourceTree = ""; }; - B54A2AA14A7640E4A9B85F662D37A7D6 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftyJSON.modulemap; sourceTree = ""; }; - B5E95FBF4C047EA6401BB7B12E42A8B7 /* ValueCoding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ValueCoding-dummy.m"; sourceTree = ""; }; + B83D9AFDFB742C56E022B4AA0CDC158F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - C31FCA3CC32B1FFB7E577A3FD7C8BDC8 /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON.swift; sourceTree = ""; }; + BF15F79E6A81866AB72533004E067E26 /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C3461681C9E35896A154A3D8722352D1 /* Pods-Custom Money-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Custom Money-acknowledgements.plist"; sourceTree = ""; }; + C3D2F3409B96C2E5BED5ECF6463637E7 /* ValueCoding-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ValueCoding-umbrella.h"; sourceTree = ""; }; C6AD9E331A620215773EDAE3D38920CB /* Pods-Custom Money.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Custom Money.release.xcconfig"; sourceTree = ""; }; - CCB9149D7C1AAA968AE461BDB9D1EEE8 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; - D1FC653D131B20022B75023F33F250B9 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D19D69FDBAF421094211FAC6684DEA4A /* Money.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; D3F2B752C29D13FEC643AB1DFAD68B3E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D5181C8B9D1105F7243EBF4BDFDA56F8 /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; - D619B7641BF35CCD0B69F64DE1F3B98A /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D8F2976F6779F80CE007235A83876CE7 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; - DC0E8FE128B75E4AF4C971D16E94076E /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DF6284F39323D79B75BEEB8C366DE87C /* Pods-Custom Money.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Custom Money.debug.xcconfig"; sourceTree = ""; }; - E2CDFCF407B3970A3F2FD3C19CCA4CE7 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; - E62925B3150C7C3667A39618DC790FEE /* NSDecimalNumberExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberExtensions.swift; sourceTree = ""; }; - EAB4E53658C315D2C1DA1EF7648011CE /* DecimalNumberType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DecimalNumberType.swift; sourceTree = ""; }; - ED5BC5B78EBB608AE95556AC64F2F724 /* ValueCoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValueCoding.swift; path = ValueCoding/ValueCoding.swift; sourceTree = ""; }; - F158272DDE3E68231F6FE2A3DEB56C4E /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; - F4AAAAC72DECF91163331BFCDD583341 /* Money.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; + E0F4EC97A30E717F5C269B7994D3F913 /* Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E49908B24AD506059D7A267BC1530E5C /* ValueCoding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ValueCoding.xcconfig; sourceTree = ""; }; F50C4C662DD8A2616FF07C3827D2AAC0 /* Pods-Custom Money.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Custom Money.modulemap"; sourceTree = ""; }; - F5930B31AFF68C5977278446CDA62117 /* FX.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FX.swift; sourceTree = ""; }; + FD1C6097856C892660CC2D780125AEFB /* ValueCoding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ValueCoding-dummy.m"; sourceTree = ""; }; + FEC6AB3C9983B456BEC89D265001476D /* NSDecimalExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalExtensions.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 26691E219EB71EEE5497C93262E46BE8 /* Frameworks */ = { + B07461545930B9D70B366C22C7AF74E9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 55F59EF2FEC2FEE3BC277F4BA1D4F09A /* Foundation.framework in Frameworks */, + CBC69EB44CFE76D9E5041FCF08D0E011 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2E83C281B196256F4D04B0202318FAA5 /* Frameworks */ = { + C7FFB008B3970BBB283EE396E6F77A54 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E9B5A442515061359B42AD145087D2CB /* Foundation.framework in Frameworks */, + 56B81E40E7225F8A3CFAAC50B96747E3 /* Foundation.framework in Frameworks */, + FA658B0930DC1FD47F6B1E1DE851D06A /* ValueCoding.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4716E670998219B6B6EB4A7AB3211D1C /* Frameworks */ = { + E67AD8029B756100E09AD54859700481 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 35575A63DB40EB8EC8BFD8189093A5DB /* Foundation.framework in Frameworks */, + EC27F4A4DE420EC11BBF4E3F873FF55B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A387B697F1B332C664E5B917B7A44F89 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2BB379DF9ADAE615B5B854B0D09A84B3 /* Foundation.framework in Frameworks */, - C99613480BF41E01DBBCC5EC99AC5205 /* Result.framework in Frameworks */, - 0DEB71230E556C519D20B52B81856183 /* SwiftyJSON.framework in Frameworks */, - C5B2410FDFA66FDB0ED18EBBD613011B /* ValueCoding.framework in Frameworks */, +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 073CCC950E85E0E8084055D8C1FDA667 /* iOS */ = { + isa = PBXGroup; + children = ( + B83D9AFDFB742C56E022B4AA0CDC158F /* Foundation.framework */, ); - runOnlyForDeploymentPostprocessing = 0; + name = iOS; + sourceTree = ""; }; - F18CA1F2FE54D2F1A91CC3F097D2662E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D5EDA42C7061FECC68057157E8E8E72E /* Foundation.framework in Frameworks */, + 149ED7FE9D77119120A399A5DED24BB3 /* Support Files */ = { + isa = PBXGroup; + children = ( + 1C6E95301D4D870CC657C84CF6E99969 /* Info.plist */, + 7C2CCEE8C72DE73CB82FB24576B1832D /* ValueCoding.modulemap */, + E49908B24AD506059D7A267BC1530E5C /* ValueCoding.xcconfig */, + FD1C6097856C892660CC2D780125AEFB /* ValueCoding-dummy.m */, + 929E2636E2B7609704F1838F5FFEDCD7 /* ValueCoding-prefix.pch */, + C3D2F3409B96C2E5BED5ECF6463637E7 /* ValueCoding-umbrella.h */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Support Files"; + path = "../Target Support Files/ValueCoding"; + sourceTree = ""; }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 13A85A3CB9EFB99894B9E1D258300E7F /* ValueCoding */ = { + 16515D0AC36B6721CED3473C7CCC3BED /* Products */ = { isa = PBXGroup; children = ( - ED5BC5B78EBB608AE95556AC64F2F724 /* ValueCoding.swift */, - 85C16A8C8A8FE775D0BED2B53BDCB62D /* Support Files */, + E0F4EC97A30E717F5C269B7994D3F913 /* Money.framework */, + A2F79DED6A9E3EE0A847EFADEBDEB815 /* Pods_Custom_Money.framework */, + 7213835428667BBA6B07743E6F4B8121 /* ValueCoding.framework */, ); - path = ValueCoding; + name = Products; sourceTree = ""; }; 37FC7D49E06169F9EEE81FBA6366BDB9 /* Pods-Custom Money */ = { @@ -236,51 +177,21 @@ path = "Target Support Files/Pods-Custom Money"; sourceTree = ""; }; - 455019E8E9063E7A12C1AB640CD1296A /* Pods */ = { - isa = PBXGroup; - children = ( - B5C0E67CF8FBCF29AA3D76C4CEADF315 /* Result */, - ED084EEB9ACE805519B38840A5FB08F9 /* SwiftyJSON */, - 13A85A3CB9EFB99894B9E1D258300E7F /* ValueCoding */, - ); - name = Pods; - sourceTree = ""; - }; - 5DD2E484761187C567F4014DEAD6142B /* Decimal */ = { - isa = PBXGroup; - children = ( - 96019E6C4F5442A1E3808A4FE6F16AC7 /* Decimal.swift */, - EAB4E53658C315D2C1DA1EF7648011CE /* DecimalNumberType.swift */, - 85AC61CD09C9146602035B3FAD8286E8 /* NSDecimalExtensions.swift */, - E62925B3150C7C3667A39618DC790FEE /* NSDecimalNumberExtensions.swift */, - ); - path = Decimal; - sourceTree = ""; - }; - 6B4BC295AC3CACEFD0CD9987AFF043AD /* Shared */ = { + 574599CEBF6435496FDDAB2B29221620 /* FX */ = { isa = PBXGroup; children = ( - 65BA58A579BB1C7C57F7BB981A00EE3B /* Autogenerated.swift */, - 4FFDF2554FD50F0FE48999A0C3ED4901 /* Currency.swift */, - 84B6F31F259C914449AFEB191BD7477F /* Locale.swift */, - F4AAAAC72DECF91163331BFCDD583341 /* Money.swift */, - 1CDB0B04066D7BD85C7774722D584516 /* Support.swift */, - 5DD2E484761187C567F4014DEAD6142B /* Decimal */, - EE90FDC56D047DE31B05424C8AD23171 /* FX */, + 04C4C3723005BF9BD71F48209715A3B5 /* Bitcoin.swift */, ); - path = Shared; + path = FX; sourceTree = ""; }; - 7CD8DE1FA9C24B39D42EAA6BE52E7E30 /* Products */ = { + 77E13A9F9549183182D57E4F6BC47B75 /* ValueCoding */ = { isa = PBXGroup; children = ( - A26E7BC45299526E4063BB4C61816580 /* Money.framework */, - 7D56F281EDF6E7A4ED5627141F4E4DA2 /* Pods_Custom_Money.framework */, - D619B7641BF35CCD0B69F64DE1F3B98A /* Result.framework */, - DC0E8FE128B75E4AF4C971D16E94076E /* SwiftyJSON.framework */, - 50DFB978AB699248C726E034F1B3B42F /* ValueCoding.framework */, + 16E5D033D4E56FCCDA51AF4B82E8833B /* ValueCoding.swift */, + 149ED7FE9D77119120A399A5DED24BB3 /* Support Files */, ); - name = Products; + path = ValueCoding; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -288,39 +199,22 @@ children = ( BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, CAC5A6648E74B35CD2E9377F99CF2FF6 /* Development Pods */, - BA66696464500E2C416485FBF1B9A1DC /* Frameworks */, - 455019E8E9063E7A12C1AB640CD1296A /* Pods */, - 7CD8DE1FA9C24B39D42EAA6BE52E7E30 /* Products */, + C0DC8A3AB5D4AF41984AEF1011AF1A31 /* Frameworks */, + EC230470351D26B1680E4C1C95EFBC63 /* Pods */, + 16515D0AC36B6721CED3473C7CCC3BED /* Products */, CC000F6A87092A7C760D60A29FA15A12 /* Targets Support Files */, ); sourceTree = ""; }; - 821C7EACE9BFB31DB92E84CD826E39AC /* Support Files */ = { - isa = PBXGroup; - children = ( - 94291E74B2ABBA056AD28AD1873DD8E3 /* Info.plist */, - B54A2AA14A7640E4A9B85F662D37A7D6 /* SwiftyJSON.modulemap */, - 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */, - E2CDFCF407B3970A3F2FD3C19CCA4CE7 /* SwiftyJSON-dummy.m */, - 1DADDD5C59FCA27235ACA32605BD1527 /* SwiftyJSON-prefix.pch */, - 0216247E5703DEFCB395822BEDEDB978 /* SwiftyJSON-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftyJSON"; - sourceTree = ""; - }; - 85C16A8C8A8FE775D0BED2B53BDCB62D /* Support Files */ = { + 8D59A58B70DAF9946A845D36D06BF1D1 /* Decimal */ = { isa = PBXGroup; children = ( - 3F972EB6AED7000E61962C751DD7165D /* Info.plist */, - 3D699C1DA947CA5DBF82BE8927112AC0 /* ValueCoding.modulemap */, - 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */, - B5E95FBF4C047EA6401BB7B12E42A8B7 /* ValueCoding-dummy.m */, - 9F8525B17F44112BA10D136F7F6C4089 /* ValueCoding-prefix.pch */, - 65E593BAC0D422045A94607A9C0A277E /* ValueCoding-umbrella.h */, + 41899C22A0000BC7587BEAC904F5CD95 /* Decimal.swift */, + 490CCA5C7A0E21DE18802A0FC35C4372 /* DecimalNumberType.swift */, + FEC6AB3C9983B456BEC89D265001476D /* NSDecimalExtensions.swift */, + 6472CDE547C6BD52B866F28EBA1A77EE /* NSDecimalNumberExtensions.swift */, ); - name = "Support Files"; - path = "../Target Support Files/ValueCoding"; + path = Decimal; sourceTree = ""; }; 8EECE84127C724CBF2DA747FDAD1ECBE /* Money */ = { @@ -333,23 +227,11 @@ path = ../../..; sourceTree = ""; }; - B5C0E67CF8FBCF29AA3D76C4CEADF315 /* Result */ = { + C0DC8A3AB5D4AF41984AEF1011AF1A31 /* Frameworks */ = { isa = PBXGroup; children = ( - CCB9149D7C1AAA968AE461BDB9D1EEE8 /* Result.swift */, - 4F003A917BF6D1C4FBA4D94B06C30179 /* ResultType.swift */, - EDEC584DA0D01041295CAE86B185A4FB /* Support Files */, - ); - path = Result; - sourceTree = ""; - }; - BA66696464500E2C416485FBF1B9A1DC /* Frameworks */ = { - isa = PBXGroup; - children = ( - D1FC653D131B20022B75023F33F250B9 /* Result.framework */, - 77FD247247D6D3CDBF638A9DB0EBDB4E /* SwiftyJSON.framework */, - 5C29D8E4CA9E4CF9452CBCB9F8D56071 /* ValueCoding.framework */, - D1F9686EA2AB71EF7FD960AFCB6C0950 /* iOS */, + BF15F79E6A81866AB72533004E067E26 /* ValueCoding.framework */, + 073CCC950E85E0E8084055D8C1FDA667 /* iOS */, ); name = Frameworks; sourceTree = ""; @@ -378,19 +260,11 @@ name = "Targets Support Files"; sourceTree = ""; }; - D1F9686EA2AB71EF7FD960AFCB6C0950 /* iOS */ = { - isa = PBXGroup; - children = ( - 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; E5498F1F4B28BB7BA4A01D3CA741DBC9 /* Money */ = { isa = PBXGroup; children = ( C47F2907133A2F3B86AD83E7515FF818 /* iOS */, - 6B4BC295AC3CACEFD0CD9987AFF043AD /* Shared */, + FA5FD4F129837372A067F28D04A294A5 /* Shared */, ); path = Money; sourceTree = ""; @@ -409,147 +283,84 @@ path = "Examples/Custom Money/Pods/Target Support Files/Money"; sourceTree = ""; }; - ED084EEB9ACE805519B38840A5FB08F9 /* SwiftyJSON */ = { - isa = PBXGroup; - children = ( - C31FCA3CC32B1FFB7E577A3FD7C8BDC8 /* SwiftyJSON.swift */, - 821C7EACE9BFB31DB92E84CD826E39AC /* Support Files */, - ); - path = SwiftyJSON; - sourceTree = ""; - }; - EDEC584DA0D01041295CAE86B185A4FB /* Support Files */ = { + EC230470351D26B1680E4C1C95EFBC63 /* Pods */ = { isa = PBXGroup; children = ( - 71224125016483CBA4B84EA93DFD15CB /* Info.plist */, - 0DA8BD07E1098E205AF45D501594137C /* Result.modulemap */, - 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */, - D8F2976F6779F80CE007235A83876CE7 /* Result-dummy.m */, - D5181C8B9D1105F7243EBF4BDFDA56F8 /* Result-prefix.pch */, - F158272DDE3E68231F6FE2A3DEB56C4E /* Result-umbrella.h */, + 77E13A9F9549183182D57E4F6BC47B75 /* ValueCoding */, ); - name = "Support Files"; - path = "../Target Support Files/Result"; + name = Pods; sourceTree = ""; }; - EE90FDC56D047DE31B05424C8AD23171 /* FX */ = { + FA5FD4F129837372A067F28D04A294A5 /* Shared */ = { isa = PBXGroup; children = ( - 08BC67A546C2AFC811EEBC0A3EA3D057 /* Bitcoin.swift */, - F5930B31AFF68C5977278446CDA62117 /* FX.swift */, - 9C8568ADB63EDF92989E900A1D6364DF /* OpenExchangeRates.swift */, - 5F4E5AA87C3A971A927D7266A03C6007 /* Yahoo.swift */, + 0F2AD72B9E4878BB0875BBC705D8EE51 /* Autogenerated.swift */, + 410C601B05E31125EBFE771678B9EF52 /* Currency.swift */, + 13390C2B50CCFAD30AA3185211BA033F /* Locale.swift */, + D19D69FDBAF421094211FAC6684DEA4A /* Money.swift */, + 2E845BEE55854CFF558172C1C2537C56 /* Support.swift */, + 8D59A58B70DAF9946A845D36D06BF1D1 /* Decimal */, + 574599CEBF6435496FDDAB2B29221620 /* FX */, ); - path = FX; + path = Shared; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 0F966CF81B22D45C45CF29E5C8648101 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2A9D3A5C8B3A63A8E0A83B9D201CE495 /* Money-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3350670A2374EEDA693FC44587E4B025 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 236F3967A7690DD0C6FA01C8F896E602 /* ValueCoding-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8269C693AE9B0FAA04EE2300F9720E28 /* Headers */ = { + 1EC91F506DB615062DB1EE76998157C7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 09F8C9409DF28C51561C0D4BCBDB7426 /* Pods-Custom Money-umbrella.h in Headers */, + 78E45678E3EBA8C181CF2CEA04307659 /* Money-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A6F163D67B06B223409FF5E4AF539111 /* Headers */ = { + 43B577D3072166715FB1CB9E59538144 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6DB484443FAE1B97626FAAB91D9E7BF6 /* Result-umbrella.h in Headers */, + C2BA97C228030775ABC83F6396CABCB1 /* ValueCoding-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E0F0717B80C17559756C56973AB7F797 /* Headers */ = { + F51C82D8595D02EC335F42152D005344 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 25A9EA2A9FE60984C5E94D0B6D65B3A5 /* SwiftyJSON-umbrella.h in Headers */, + AC9FEF5458563CEF3A8F5817E9CE8398 /* Pods-Custom Money-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 21908E9D85EA98581A510FE95B15E420 /* SwiftyJSON */ = { - isa = PBXNativeTarget; - buildConfigurationList = EF8B566BDC1529DCD6650B788881F07D /* Build configuration list for PBXNativeTarget "SwiftyJSON" */; - buildPhases = ( - 6F63AE9B9F0FD2F4183A89AB038D03E0 /* Sources */, - 26691E219EB71EEE5497C93262E46BE8 /* Frameworks */, - E0F0717B80C17559756C56973AB7F797 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SwiftyJSON; - productName = SwiftyJSON; - productReference = DC0E8FE128B75E4AF4C971D16E94076E /* SwiftyJSON.framework */; - productType = "com.apple.product-type.framework"; - }; - 3347657561F4F3F50CD418F62B4DC36A /* Money */ = { - isa = PBXNativeTarget; - buildConfigurationList = 173EF496D559077C97AB9793C9646A11 /* Build configuration list for PBXNativeTarget "Money" */; - buildPhases = ( - 832E307CDD66999769ADF20C2F9FA8BC /* Sources */, - A387B697F1B332C664E5B917B7A44F89 /* Frameworks */, - 0F966CF81B22D45C45CF29E5C8648101 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - 2EF61614FB0F30281A7BB9BDEFDC3160 /* PBXTargetDependency */, - 6843AF9F2117F8FD41A3365C30CB4CE1 /* PBXTargetDependency */, - D54F965FD1C41C03DCE0DC012063512F /* PBXTargetDependency */, - ); - name = Money; - productName = Money; - productReference = A26E7BC45299526E4063BB4C61816580 /* Money.framework */; - productType = "com.apple.product-type.framework"; - }; - 69E2A071A4F7A31B2F519FD88AF71F04 /* Result */ = { + 044CBC9CD9F02629B81918713A80D096 /* Pods-Custom Money */ = { isa = PBXNativeTarget; - buildConfigurationList = F27989106635EC8785D98836E97BB0C5 /* Build configuration list for PBXNativeTarget "Result" */; + buildConfigurationList = 22BF802648EDEEC7EF085E2FD6178B52 /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */; buildPhases = ( - 431218A0886AE946F951B099864F8286 /* Sources */, - 2E83C281B196256F4D04B0202318FAA5 /* Frameworks */, - A6F163D67B06B223409FF5E4AF539111 /* Headers */, + 87059981AA49FB79C63CE567AC2A0B86 /* Sources */, + B07461545930B9D70B366C22C7AF74E9 /* Frameworks */, + F51C82D8595D02EC335F42152D005344 /* Headers */, ); buildRules = ( ); dependencies = ( + A5A6C9F3A008999255C789724677A538 /* PBXTargetDependency */, + 25B151FF84DE6ADB378010B2D2AA9AEA /* PBXTargetDependency */, ); - name = Result; - productName = Result; - productReference = D619B7641BF35CCD0B69F64DE1F3B98A /* Result.framework */; + name = "Pods-Custom Money"; + productName = "Pods-Custom Money"; + productReference = A2F79DED6A9E3EE0A847EFADEBDEB815 /* Pods_Custom_Money.framework */; productType = "com.apple.product-type.framework"; }; - 71F9C95AC48B3432BDA235BBD238AE94 /* ValueCoding */ = { + 145A9F3DB68CB80ACFF30D6C4E013D46 /* ValueCoding */ = { isa = PBXNativeTarget; - buildConfigurationList = 6F325C4B9048365BEF68BF26E84300EF /* Build configuration list for PBXNativeTarget "ValueCoding" */; + buildConfigurationList = 426921AA4E34588D2124AD73A0FC34FB /* Build configuration list for PBXNativeTarget "ValueCoding" */; buildPhases = ( - 4EA91A9E1134AB9B8EDCEE218EB77EB3 /* Sources */, - F18CA1F2FE54D2F1A91CC3F097D2662E /* Frameworks */, - 3350670A2374EEDA693FC44587E4B025 /* Headers */, + ED8C68CABEAB65613DA353265502E08F /* Sources */, + E67AD8029B756100E09AD54859700481 /* Frameworks */, + 43B577D3072166715FB1CB9E59538144 /* Headers */, ); buildRules = ( ); @@ -557,28 +368,25 @@ ); name = ValueCoding; productName = ValueCoding; - productReference = 50DFB978AB699248C726E034F1B3B42F /* ValueCoding.framework */; + productReference = 7213835428667BBA6B07743E6F4B8121 /* ValueCoding.framework */; productType = "com.apple.product-type.framework"; }; - B63DBF20C97F25D4F844CB4BDFE4527A /* Pods-Custom Money */ = { + 5987C803818DB2CBEAB2317CF1754330 /* Money */ = { isa = PBXNativeTarget; - buildConfigurationList = 37A41A6B9185E59239BFB81D6353E1CF /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */; + buildConfigurationList = A25CD3E75B36B6D9EED120659C3F5A64 /* Build configuration list for PBXNativeTarget "Money" */; buildPhases = ( - 9939AE9FAD1EEC366F8358A7D92606F6 /* Sources */, - 4716E670998219B6B6EB4A7AB3211D1C /* Frameworks */, - 8269C693AE9B0FAA04EE2300F9720E28 /* Headers */, + C9143C603AA6D78141BC1895733399FC /* Sources */, + C7FFB008B3970BBB283EE396E6F77A54 /* Frameworks */, + 1EC91F506DB615062DB1EE76998157C7 /* Headers */, ); buildRules = ( ); dependencies = ( - 6A5AB7BA465846DD13A7288647AE3D64 /* PBXTargetDependency */, - 5296D6953C077C85AFCB563124192C7D /* PBXTargetDependency */, - 14EE644027DDF28E4652404B99E3BE47 /* PBXTargetDependency */, - DBB46D880EEEB766A474B6074D4B98DF /* PBXTargetDependency */, + 4EC0085940BE7736C2F28609C830E902 /* PBXTargetDependency */, ); - name = "Pods-Custom Money"; - productName = "Pods-Custom Money"; - productReference = 7D56F281EDF6E7A4ED5627141F4E4DA2 /* Pods_Custom_Money.framework */; + name = Money; + productName = Money; + productReference = E0F4EC97A30E717F5C269B7994D3F913 /* Money.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -598,157 +406,81 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 7CD8DE1FA9C24B39D42EAA6BE52E7E30 /* Products */; + productRefGroup = 16515D0AC36B6721CED3473C7CCC3BED /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 3347657561F4F3F50CD418F62B4DC36A /* Money */, - B63DBF20C97F25D4F844CB4BDFE4527A /* Pods-Custom Money */, - 69E2A071A4F7A31B2F519FD88AF71F04 /* Result */, - 21908E9D85EA98581A510FE95B15E420 /* SwiftyJSON */, - 71F9C95AC48B3432BDA235BBD238AE94 /* ValueCoding */, + 5987C803818DB2CBEAB2317CF1754330 /* Money */, + 044CBC9CD9F02629B81918713A80D096 /* Pods-Custom Money */, + 145A9F3DB68CB80ACFF30D6C4E013D46 /* ValueCoding */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 431218A0886AE946F951B099864F8286 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7728D251CE689827DF8E05558D72C81E /* Result-dummy.m in Sources */, - 591176D28A122FFA17E011864A776993 /* Result.swift in Sources */, - 15A05B248F68888003FEABA47768DE1D /* ResultType.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4EA91A9E1134AB9B8EDCEE218EB77EB3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F4B434FCD7E72D2F15FBE1EA3D4863D6 /* ValueCoding-dummy.m in Sources */, - 6147CF51A602C3FCA8FEDE84877B7ACD /* ValueCoding.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6F63AE9B9F0FD2F4183A89AB038D03E0 /* Sources */ = { + 87059981AA49FB79C63CE567AC2A0B86 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 038C8E58B7B9DAFF0FD566A7007611B4 /* SwiftyJSON-dummy.m in Sources */, - 78C32312A383054CE163CB56EB4A6D48 /* SwiftyJSON.swift in Sources */, + 75D3B4AE3788BA3D1AE9885E9C9E6E82 /* Pods-Custom Money-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 832E307CDD66999769ADF20C2F9FA8BC /* Sources */ = { + C9143C603AA6D78141BC1895733399FC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CE1689402744CCE280B0F756DA50ECF3 /* ApplePay.swift in Sources */, - 604C3EF6EBD60E420F79C960C0FFE3F3 /* Autogenerated.swift in Sources */, - 0729C5D8206CD9778B09748985945980 /* Bitcoin.swift in Sources */, - 5949E7BCFC6C1C7E8C45060A34A6F716 /* Currency.swift in Sources */, - A4FD35EB1940F9886E10B10616AB28C1 /* Decimal.swift in Sources */, - 8248BB0527F89719F6C82AED4222C9F6 /* DecimalNumberType.swift in Sources */, - 9274FF433AB9B56CF48FC7288EF9325F /* FX.swift in Sources */, - DBC86ECB83D8397B20E057F9BF037D81 /* Locale.swift in Sources */, - 38B27E2E94FCEAD56BED62B563CA0EC6 /* Money-dummy.m in Sources */, - A561B627943D37C46AB4D233F70A4DCB /* Money.swift in Sources */, - 7FBF37C99152E404ECA674EFB04AF389 /* NSDecimalExtensions.swift in Sources */, - 70F55C50ABEB92E976EE1CB30E2A47AC /* NSDecimalNumberExtensions.swift in Sources */, - DE8442956EAF8484B2A954CE7327FA3B /* OpenExchangeRates.swift in Sources */, - 428563C265D3F5B67D83A2473C70660F /* Support.swift in Sources */, - 2D28051F1BDF7ADC153BFE8B89FBD9C9 /* Yahoo.swift in Sources */, + CF6266B34B34933D7C0F69971B53ADDB /* ApplePay.swift in Sources */, + 3724442DD3210CD39C0D04ECC00A3D31 /* Autogenerated.swift in Sources */, + 97F2C30620812AEEF914A1D4197C4ECE /* Bitcoin.swift in Sources */, + 2B3F00C1A99FA65559FD9D556FD82DEB /* Currency.swift in Sources */, + BEC37EB752772C5BBF653A4A1D7F0AC4 /* Decimal.swift in Sources */, + C4E4CE3E880017017A4B48D5CCFC638B /* DecimalNumberType.swift in Sources */, + 1B2C5B155FD9576F36DBDD378BF35CA2 /* Locale.swift in Sources */, + E744B80B1F5A07DB3756F4C58926DA27 /* Money-dummy.m in Sources */, + F2CD323787952EBDAB8D1BFE25A1E901 /* Money.swift in Sources */, + AB25D7F606B76DF54BB019AD6925B0D6 /* NSDecimalExtensions.swift in Sources */, + A7FE509526C5C34C71DEAA3A1910BED9 /* NSDecimalNumberExtensions.swift in Sources */, + 0BB1D7DC86AF7A27E217FA967D166FDE /* Support.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9939AE9FAD1EEC366F8358A7D92606F6 /* Sources */ = { + ED8C68CABEAB65613DA353265502E08F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 46B661B9D41457BFE21F2618E7CCC4E0 /* Pods-Custom Money-dummy.m in Sources */, + 6A51C615EBA79FCB378018F0C848F5FE /* ValueCoding-dummy.m in Sources */, + 1FFC5F9C4DC3AC6A965F4CA02F4EABA7 /* ValueCoding.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 14EE644027DDF28E4652404B99E3BE47 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyJSON; - target = 21908E9D85EA98581A510FE95B15E420 /* SwiftyJSON */; - targetProxy = 36023380F037B6AB8D4492DCA3A27CD5 /* PBXContainerItemProxy */; - }; - 2EF61614FB0F30281A7BB9BDEFDC3160 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Result; - target = 69E2A071A4F7A31B2F519FD88AF71F04 /* Result */; - targetProxy = 3908484531EEE6859A81940C9B59CFE0 /* PBXContainerItemProxy */; - }; - 5296D6953C077C85AFCB563124192C7D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Result; - target = 69E2A071A4F7A31B2F519FD88AF71F04 /* Result */; - targetProxy = 41F272EA7F75CA2CEBC8E35579A501C9 /* PBXContainerItemProxy */; - }; - 6843AF9F2117F8FD41A3365C30CB4CE1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyJSON; - target = 21908E9D85EA98581A510FE95B15E420 /* SwiftyJSON */; - targetProxy = CE9631D32B8258D2F370FFAFA009EA36 /* PBXContainerItemProxy */; - }; - 6A5AB7BA465846DD13A7288647AE3D64 /* PBXTargetDependency */ = { + 25B151FF84DE6ADB378010B2D2AA9AEA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Money; - target = 3347657561F4F3F50CD418F62B4DC36A /* Money */; - targetProxy = 1DFE2A02B5C6BDFE88F8CA3DFB0FC286 /* PBXContainerItemProxy */; + name = ValueCoding; + target = 145A9F3DB68CB80ACFF30D6C4E013D46 /* ValueCoding */; + targetProxy = D05B804F17E203D12A32956058419ED7 /* PBXContainerItemProxy */; }; - D54F965FD1C41C03DCE0DC012063512F /* PBXTargetDependency */ = { + 4EC0085940BE7736C2F28609C830E902 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ValueCoding; - target = 71F9C95AC48B3432BDA235BBD238AE94 /* ValueCoding */; - targetProxy = 689A35B712A787B3B95896681D00CC01 /* PBXContainerItemProxy */; + target = 145A9F3DB68CB80ACFF30D6C4E013D46 /* ValueCoding */; + targetProxy = 7508ABB172281CBD4726F6E5BE2A3967 /* PBXContainerItemProxy */; }; - DBB46D880EEEB766A474B6074D4B98DF /* PBXTargetDependency */ = { + A5A6C9F3A008999255C789724677A538 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ValueCoding; - target = 71F9C95AC48B3432BDA235BBD238AE94 /* ValueCoding */; - targetProxy = A8D7D5C5D4B2B0DBEA7CD9A1C6CA1131 /* PBXContainerItemProxy */; + name = Money; + target = 5987C803818DB2CBEAB2317CF1754330 /* Money */; + targetProxy = 950F7FE10BCA8FFAEC8ED0B3C5E64C47 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 055D01E44408311F27903ADC8D38F0CA /* Debug */ = { + 36150814459E013DEB9AF9F417320711 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Result/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Result; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 1A5C3AB79FFAD473C53D2FF59AD706F0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DF6284F39323D79B75BEEB8C366DE87C /* Pods-Custom Money.debug.xcconfig */; + baseConfigurationReference = C6AD9E331A620215773EDAE3D38920CB /* Pods-Custom Money.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -763,23 +495,22 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-Custom Money/Pods-Custom Money.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = Pods_Custom_Money; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 4BF3785E841E8BB4B44226A45951DD6B /* Release */ = { + 632956B4233A46F42B60E5AA63A45405 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */; + baseConfigurationReference = E49908B24AD506059D7A267BC1530E5C /* ValueCoding.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -804,34 +535,7 @@ }; name = Release; }; - 5137075954854CFDC9FDBFD4055CD3C4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftyJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 565952CEBE67B77B83B3660145873A03 /* Release */ = { + 6976B9A4615819C5770AC1883B7E182D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */; buildSettings = { @@ -858,39 +562,9 @@ }; name = Release; }; - 5CCE459C2B148F060DEF089C2B8EF33E /* Release */ = { + B85D9C5D956AD770384B10108E777BE1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C6AD9E331A620215773EDAE3D38920CB /* Pods-Custom Money.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-Custom Money/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Custom Money/Pods-Custom Money.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_Custom_Money; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 829ACAAF4BB2003C92037894037A08CB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */; + baseConfigurationReference = 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -899,14 +573,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ValueCoding/ValueCoding-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ValueCoding/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Money/Money-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Money/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ValueCoding/ValueCoding.modulemap"; + MODULEMAP_FILE = "Target Support Files/Money/Money.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ValueCoding; + PRODUCT_NAME = Money; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -916,33 +590,6 @@ }; name = Debug; }; - 88CDFA37A74FC54F3B6175503E5E98E2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Result/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Result; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; C074F63C9EE7CB4D8C618390A32CEC35 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -982,9 +629,9 @@ }; name = Debug; }; - C96816307E3A214E54456E8FF50C29B9 /* Debug */ = { + CE136A56442EE6270BE73E88A2E3CA8F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */; + baseConfigurationReference = DF6284F39323D79B75BEEB8C366DE87C /* Pods-Custom Money.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -993,14 +640,17 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Money/Money-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Money/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Custom Money/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Money/Money.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Custom Money/Pods-Custom Money.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Money; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_Custom_Money; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -1044,9 +694,9 @@ }; name = Release; }; - FD80488E4A9224EB5F7576CB6451541A /* Debug */ = { + FCD7832138D70F60F643AAD0265177FD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */; + baseConfigurationReference = E49908B24AD506059D7A267BC1530E5C /* ValueCoding.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -1055,14 +705,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ValueCoding/ValueCoding-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ValueCoding/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; + MODULEMAP_FILE = "Target Support Files/ValueCoding/ValueCoding.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftyJSON; + PRODUCT_NAME = ValueCoding; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -1075,11 +725,11 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 173EF496D559077C97AB9793C9646A11 /* Build configuration list for PBXNativeTarget "Money" */ = { + 22BF802648EDEEC7EF085E2FD6178B52 /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */ = { isa = XCConfigurationList; buildConfigurations = ( - C96816307E3A214E54456E8FF50C29B9 /* Debug */, - 565952CEBE67B77B83B3660145873A03 /* Release */, + CE136A56442EE6270BE73E88A2E3CA8F /* Debug */, + 36150814459E013DEB9AF9F417320711 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1093,38 +743,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 37A41A6B9185E59239BFB81D6353E1CF /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1A5C3AB79FFAD473C53D2FF59AD706F0 /* Debug */, - 5CCE459C2B148F060DEF089C2B8EF33E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6F325C4B9048365BEF68BF26E84300EF /* Build configuration list for PBXNativeTarget "ValueCoding" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 829ACAAF4BB2003C92037894037A08CB /* Debug */, - 4BF3785E841E8BB4B44226A45951DD6B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EF8B566BDC1529DCD6650B788881F07D /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { + 426921AA4E34588D2124AD73A0FC34FB /* Build configuration list for PBXNativeTarget "ValueCoding" */ = { isa = XCConfigurationList; buildConfigurations = ( - FD80488E4A9224EB5F7576CB6451541A /* Debug */, - 5137075954854CFDC9FDBFD4055CD3C4 /* Release */, + FCD7832138D70F60F643AAD0265177FD /* Debug */, + 632956B4233A46F42B60E5AA63A45405 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F27989106635EC8785D98836E97BB0C5 /* Build configuration list for PBXNativeTarget "Result" */ = { + A25CD3E75B36B6D9EED120659C3F5A64 /* Build configuration list for PBXNativeTarget "Money" */ = { isa = XCConfigurationList; buildConfigurations = ( - 055D01E44408311F27903ADC8D38F0CA /* Debug */, - 88CDFA37A74FC54F3B6175503E5E98E2 /* Release */, + B85D9C5D956AD770384B10108E777BE1 /* Debug */, + 6976B9A4615819C5770AC1883B7E182D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme b/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme index f323f82..3a0cc0d 100644 --- a/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme +++ b/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/Examples/Custom Money/Pods/Result/LICENSE b/Examples/Custom Money/Pods/Result/LICENSE deleted file mode 100644 index 3026ee1..0000000 --- a/Examples/Custom Money/Pods/Result/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Rob Rix - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/Examples/Custom Money/Pods/Result/README.md b/Examples/Custom Money/Pods/Result/README.md deleted file mode 100644 index 2df4ab4..0000000 --- a/Examples/Custom Money/Pods/Result/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Result - -[![Build Status](https://travis-ci.org/antitypical/Result.svg?branch=master)](https://travis-ci.org/antitypical/Result) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) -[![CocoaPods](https://img.shields.io/cocoapods/v/Result.svg)](https://cocoapods.org/) -[![Reference Status](https://www.versioneye.com/objective-c/result/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/result/references) - -This is a Swift µframework providing `Result`. - -`Result` values are either successful (wrapping `Value`) or failed (wrapping `Error`). This is similar to Swift’s native `Optional` type, with the addition of an error value to pass some error code, message, or object along to be logged or displayed to the user. - - -## Use - -[API documentation](http://cocoadocs.org/docsets/Result/) is in the source. - - -## Integration - -1. Add this repository as a submodule and/or [add it to your Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile) if you’re using [carthage](https://github.com/Carthage/Carthage/) to manage your dependencies. -2. Drag `Result.xcodeproj` into your project or workspace. -3. Link your target against `Result.framework`. -4. Application targets should ensure that the framework gets copied into their application bundle. (Framework targets should instead require the application linking them to include Result.) diff --git a/Examples/Custom Money/Pods/Result/Result/Result.swift b/Examples/Custom Money/Pods/Result/Result/Result.swift deleted file mode 100644 index 877e48b..0000000 --- a/Examples/Custom Money/Pods/Result/Result/Result.swift +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright (c) 2015 Rob Rix. All rights reserved. - -/// An enum representing either a failure with an explanatory error, or a success with a result value. -public enum Result: ResultType, CustomStringConvertible, CustomDebugStringConvertible { - case Success(T) - case Failure(Error) - - // MARK: Constructors - - /// Constructs a success wrapping a `value`. - public init(value: T) { - self = .Success(value) - } - - /// Constructs a failure wrapping an `error`. - public init(error: Error) { - self = .Failure(error) - } - - /// Constructs a result from an Optional, failing with `Error` if `nil`. - public init(_ value: T?, @autoclosure failWith: () -> Error) { - self = value.map(Result.Success) ?? .Failure(failWith()) - } - - /// Constructs a result from a function that uses `throw`, failing with `Error` if throws. - public init(@autoclosure _ f: () throws -> T) { - self.init(attempt: f) - } - - /// Constructs a result from a function that uses `throw`, failing with `Error` if throws. - public init(@noescape attempt f: () throws -> T) { - do { - self = .Success(try f()) - } catch { - self = .Failure(error as! Error) - } - } - - // MARK: Deconstruction - - /// Returns the value from `Success` Results or `throw`s the error. - public func dematerialize() throws -> T { - switch self { - case let .Success(value): - return value - case let .Failure(error): - throw error - } - } - - /// Case analysis for Result. - /// - /// Returns the value produced by applying `ifFailure` to `Failure` Results, or `ifSuccess` to `Success` Results. - public func analysis(@noescape ifSuccess ifSuccess: T -> Result, @noescape ifFailure: Error -> Result) -> Result { - switch self { - case let .Success(value): - return ifSuccess(value) - case let .Failure(value): - return ifFailure(value) - } - } - - - // MARK: Higher-order functions - - /// Returns `self.value` if this result is a .Success, or the given value otherwise. Equivalent with `??` - public func recover(@autoclosure value: () -> T) -> T { - return self.value ?? value() - } - - /// Returns this result if it is a .Success, or the given result otherwise. Equivalent with `??` - public func recoverWith(@autoclosure result: () -> Result) -> Result { - return analysis( - ifSuccess: { _ in self }, - ifFailure: { _ in result() }) - } - - // MARK: Errors - - /// The domain for errors constructed by Result. - public static var errorDomain: String { return "com.antitypical.Result" } - - /// The userInfo key for source functions in errors constructed by Result. - public static var functionKey: String { return "\(errorDomain).function" } - - /// The userInfo key for source file paths in errors constructed by Result. - public static var fileKey: String { return "\(errorDomain).file" } - - /// The userInfo key for source file line numbers in errors constructed by Result. - public static var lineKey: String { return "\(errorDomain).line" } - - /// Constructs an error. - public static func error(message: String? = nil, function: String = __FUNCTION__, file: String = __FILE__, line: Int = __LINE__) -> NSError { - var userInfo: [String: AnyObject] = [ - functionKey: function, - fileKey: file, - lineKey: line, - ] - - if let message = message { - userInfo[NSLocalizedDescriptionKey] = message - } - - return NSError(domain: errorDomain, code: 0, userInfo: userInfo) - } - - - // MARK: CustomStringConvertible - - public var description: String { - return analysis( - ifSuccess: { ".Success(\($0))" }, - ifFailure: { ".Failure(\($0))" }) - } - - - // MARK: CustomDebugStringConvertible - - public var debugDescription: String { - return description - } -} - - -/// Returns `true` if `left` and `right` are both `Success`es and their values are equal, or if `left` and `right` are both `Failure`s and their errors are equal. -public func == (left: Result, right: Result) -> Bool { - if let left = left.value, right = right.value { - return left == right - } else if let left = left.error, right = right.error { - return left == right - } - return false -} - -/// Returns `true` if `left` and `right` represent different cases, or if they represent the same case but different values. -public func != (left: Result, right: Result) -> Bool { - return !(left == right) -} - - -/// Returns the value of `left` if it is a `Success`, or `right` otherwise. Short-circuits. -public func ?? (left: Result, @autoclosure right: () -> T) -> T { - return left.recover(right()) -} - -/// Returns `left` if it is a `Success`es, or `right` otherwise. Short-circuits. -public func ?? (left: Result, @autoclosure right: () -> Result) -> Result { - return left.recoverWith(right()) -} - -// MARK: - Derive result from failable closure - -public func materialize(@noescape f: () throws -> T) -> Result { - return materialize(try f()) -} - -public func materialize(@autoclosure f: () throws -> T) -> Result { - do { - return .Success(try f()) - } catch { - return .Failure(error as NSError) - } -} - -// MARK: - Cocoa API conveniences - -/// Constructs a Result with the result of calling `try` with an error pointer. -/// -/// This is convenient for wrapping Cocoa API which returns an object or `nil` + an error, by reference. e.g.: -/// -/// Result.try { NSData(contentsOfURL: URL, options: .DataReadingMapped, error: $0) } -public func `try`(function: String = __FUNCTION__, file: String = __FILE__, line: Int = __LINE__, `try`: NSErrorPointer -> T?) -> Result { - var error: NSError? - return `try`(&error).map(Result.Success) ?? .Failure(error ?? Result.error(function: function, file: file, line: line)) -} - -/// Constructs a Result with the result of calling `try` with an error pointer. -/// -/// This is convenient for wrapping Cocoa API which returns a `Bool` + an error, by reference. e.g.: -/// -/// Result.try { NSFileManager.defaultManager().removeItemAtURL(URL, error: $0) } -public func `try`(function: String = __FUNCTION__, file: String = __FILE__, line: Int = __LINE__, `try`: NSErrorPointer -> Bool) -> Result<(), NSError> { - var error: NSError? - return `try`(&error) ? - .Success(()) - : .Failure(error ?? Result<(), NSError>.error(function: function, file: file, line: line)) -} - - -// MARK: - Operators - -infix operator >>- { - // Left-associativity so that chaining works like you’d expect, and for consistency with Haskell, Runes, swiftz, etc. - associativity left - - // Higher precedence than function application, but lower than function composition. - precedence 100 -} - -/// Returns the result of applying `transform` to `Success`es’ values, or re-wrapping `Failure`’s errors. -/// -/// This is a synonym for `flatMap`. -public func >>- (result: Result, @noescape transform: T -> Result) -> Result { - return result.flatMap(transform) -} - - -// MARK: - ErrorTypeConvertible conformance - -/// Make NSError conform to ErrorTypeConvertible -extension NSError: ErrorTypeConvertible { - public static func errorFromErrorType(error: ErrorType) -> NSError { - return error as NSError - } -} - - -import Foundation diff --git a/Examples/Custom Money/Pods/Result/Result/ResultType.swift b/Examples/Custom Money/Pods/Result/Result/ResultType.swift deleted file mode 100644 index c7ae4f9..0000000 --- a/Examples/Custom Money/Pods/Result/Result/ResultType.swift +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (c) 2015 Rob Rix. All rights reserved. - -/// A type that can represent either failure with an error or success with a result value. -public protocol ResultType { - typealias Value - typealias Error: ErrorType - - /// Constructs a successful result wrapping a `value`. - init(value: Value) - - /// Constructs a failed result wrapping an `error`. - init(error: Error) - - /// Case analysis for ResultType. - /// - /// Returns the value produced by appliying `ifFailure` to the error if self represents a failure, or `ifSuccess` to the result value if self represents a success. - func analysis(@noescape ifSuccess ifSuccess: Value -> U, @noescape ifFailure: Error -> U) -> U - - /// Returns the value if self represents a success, `nil` otherwise. - /// - /// A default implementation is provided by a protocol extension. Conforming types may specialize it. - var value: Value? { get } - - /// Returns the error if self represents a failure, `nil` otherwise. - /// - /// A default implementation is provided by a protocol extension. Conforming types may specialize it. - var error: Error? { get } -} - -public extension ResultType { - - /// Returns the value if self represents a success, `nil` otherwise. - public var value: Value? { - return analysis(ifSuccess: { $0 }, ifFailure: { _ in nil }) - } - - /// Returns the error if self represents a failure, `nil` otherwise. - public var error: Error? { - return analysis(ifSuccess: { _ in nil }, ifFailure: { $0 }) - } - - /// Returns a new Result by mapping `Success`es’ values using `transform`, or re-wrapping `Failure`s’ errors. - public func map(@noescape transform: Value -> U) -> Result { - return flatMap { .Success(transform($0)) } - } - - /// Returns the result of applying `transform` to `Success`es’ values, or re-wrapping `Failure`’s errors. - public func flatMap(@noescape transform: Value -> Result) -> Result { - return analysis( - ifSuccess: transform, - ifFailure: Result.Failure) - } - - /// Returns a new Result by mapping `Failure`'s values using `transform`, or re-wrapping `Success`es’ values. - public func mapError(@noescape transform: Error -> Error2) -> Result { - return flatMapError { .Failure(transform($0)) } - } - - /// Returns the result of applying `transform` to `Failure`’s errors, or re-wrapping `Success`es’ values. - public func flatMapError(@noescape transform: Error -> Result) -> Result { - return analysis( - ifSuccess: Result.Success, - ifFailure: transform) - } -} - -/// Protocol used to constrain `tryMap` to `Result`s with compatible `Error`s. -public protocol ErrorTypeConvertible: ErrorType { - typealias ConvertibleType = Self - static func errorFromErrorType(error: ErrorType) -> ConvertibleType -} - -public extension ResultType where Error: ErrorTypeConvertible { - - /// Returns the result of applying `transform` to `Success`es’ values, or wrapping thrown errors. - public func tryMap(@noescape transform: Value throws -> U) -> Result { - return flatMap { value in - do { - return .Success(try transform(value)) - } - catch { - let convertedError = Error.errorFromErrorType(error) as! Error - // Revisit this in a future version of Swift. https://twitter.com/jckarter/status/672931114944696321 - return .Failure(convertedError) - } - } - } -} - -// MARK: - Operators - -infix operator &&& { - /// Same associativity as &&. - associativity left - - /// Same precedence as &&. - precedence 120 -} - -/// Returns a Result with a tuple of `left` and `right` values if both are `Success`es, or re-wrapping the error of the earlier `Failure`. -public func &&& (left: L, @autoclosure right: () -> R) -> Result<(L.Value, R.Value), L.Error> { - return left.flatMap { left in right().map { right in (left, right) } } -} diff --git a/Examples/Custom Money/Pods/SwiftyJSON/LICENSE b/Examples/Custom Money/Pods/SwiftyJSON/LICENSE deleted file mode 100644 index a7af196..0000000 --- a/Examples/Custom Money/Pods/SwiftyJSON/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Ruoyu Fu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/Examples/Custom Money/Pods/SwiftyJSON/README.md b/Examples/Custom Money/Pods/SwiftyJSON/README.md deleted file mode 100644 index c0846f9..0000000 --- a/Examples/Custom Money/Pods/SwiftyJSON/README.md +++ /dev/null @@ -1,376 +0,0 @@ -#SwiftyJSON [中文介绍](http://tangplin.github.io/swiftyjson/) - -[![Travis CI](https://travis-ci.org/SwiftyJSON/SwiftyJSON.svg?branch=master)](https://travis-ci.org/SwiftyJSON/SwiftyJSON) - -SwiftyJSON makes it easy to deal with JSON data in Swift. - -1. [Why is the typical JSON handling in Swift NOT good](#why-is-the-typical-json-handling-in-swift-not-good) -1. [Requirements](#requirements) -1. [Integration](#integration) -1. [Usage](#usage) - - [Initialization](#initialization) - - [Subscript](#subscript) - - [Loop](#loop) - - [Error](#error) - - [Optional getter](#optional-getter) - - [Non-optional getter](#non-optional-getter) - - [Setter](#setter) - - [Raw object](#raw-object) - - [Literal convertibles](#literal-convertibles) -1. [Work with Alamofire](#work-with-alamofire) - -##Why is the typical JSON handling in Swift NOT good? -Swift is very strict about types. But although explicit typing is good for saving us from mistakes, it becomes painful when dealing with JSON and other areas that are, by nature, implicit about types. - -Take the Twitter API for example. Say we want to retrieve a user's "name" value of some tweet in Swift (according to Twitter's API https://dev.twitter.com/docs/api/1.1/get/statuses/home_timeline). - -The code would look like this: - -```swift - -if let statusesArray = try? NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [[String: AnyObject]], - let user = statusesArray[0]["user"] as? [String: AnyObject], - let username = user["name"] as? String { - // Finally we got the username -} - -``` - -It's not good. - -Even if we use optional chaining, it would be messy: - -```swift - -if let JSONObject = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [[String: AnyObject]], - let username = (JSONObject[0]["user"] as? [String: AnyObject])?["name"] as? String { - // There's our username -} - -``` -An unreadable mess--for something that should really be simple! - -With SwiftyJSON all you have to do is: - -```swift - -let json = JSON(data: dataFromNetworking) -if let userName = json[0]["user"]["name"].string { - //Now you got your value -} - -``` - -And don't worry about the Optional Wrapping thing. It's done for you automatically. - -```swift - -let json = JSON(data: dataFromNetworking) -if let userName = json[999999]["wrong_key"]["wrong_name"].string { - //Calm down, take it easy, the ".string" property still produces the correct Optional String type with safety -} else { - //Print the error - print(json[999999]["wrong_key"]["wrong_name"]) -} - -``` - -## Requirements - -- iOS 7.0+ / Mac OS X 10.9+ -- Xcode 7 - -##Integration - -####CocoaPods (iOS 8+, OS X 10.9+) -You can use [Cocoapods](http://cocoapods.org/) to install `SwiftyJSON`by adding it to your `Podfile`: -```ruby -platform :ios, '8.0' -use_frameworks! - -target 'MyApp' do - pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git' -end -``` -Note that this requires CocoaPods version 36, and your iOS deployment target to be at least 8.0: - -####Carthage (iOS 8+, OS X 10.9+) -You can use [Carthage](https://github.com/Carthage/Carthage) to install `SwiftyJSON` by adding it to your `Cartfile`: -``` -github "SwiftyJSON/SwiftyJSON" -``` - -####Manually (iOS 7+, OS X 10.9+) - -To use this library in your project manually you may: - -1. for Projects, just drag SwiftyJSON.swift to the project tree -2. for Workspaces, include the whole SwiftyJSON.xcodeproj - -## Usage - -####Initialization -```swift -import SwiftyJSON -``` -```swift -let json = JSON(data: dataFromNetworking) -``` -```swift -let json = JSON(jsonObject) -``` -```swift -if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) { - let json = JSON(data: dataFromString) -} -``` - -####Subscript -```swift -//Getting a double from a JSON Array -let name = json[0].double -``` -```swift -//Getting a string from a JSON Dictionary -let name = json["name"].stringValue -``` -```swift -//Getting a string using a path to the element -let path = [1,"list",2,"name"] -let name = json[path].string -//Just the same -let name = json[1]["list"][2]["name"].string -//Alternatively -let name = json[1,"list",2,"name"].string -``` -```swift -//With a hard way -let name = json[].string -``` -```swift -//With a custom way -let keys:[SubscriptType] = [1,"list",2,"name"] -let name = json[keys].string -``` -####Loop -```swift -//If json is .Dictionary -for (key,subJson):(String, JSON) in json { - //Do something you want -} -``` -*The first element is always a String, even if the JSON is an Array* -```swift -//If json is .Array -//The `index` is 0.. = json["list"].arrayValue -``` -```swift -//If not a Dictionary or nil, return [:] -let user: Dictionary = json["user"].dictionaryValue -``` - -####Setter -```swift -json["name"] = JSON("new-name") -json[0] = JSON(1) -``` -```swift -json["id"].int = 1234567890 -json["coordinate"].double = 8766.766 -json["name"].string = "Jack" -json.arrayObject = [1,2,3,4] -json.dictionary = ["name":"Jack", "age":25] -``` - -####Raw object -```swift -let jsonObject: AnyObject = json.object -``` -```swift -if let jsonObject: AnyObject = json.rawValue -``` -```swift -//convert the JSON to raw NSData -if let data = json.rawData() { - //Do something you want -} -``` -```swift -//convert the JSON to a raw String -if let string = json.rawString() { - //Do something you want -} -``` -####Existance -```swift -//shows you whether value specified in JSON or not -if json["name"].isExists() -``` - -####Literal convertibles -For more info about literal convertibles: [Swift Literal Convertibles](http://nshipster.com/swift-literal-convertible/) -```swift -//StringLiteralConvertible -let json: JSON = "I'm a json" -``` -```swift -//IntegerLiteralConvertible -let json: JSON = 12345 -``` -```swift -//BooleanLiteralConvertible -let json: JSON = true -``` -```swift -//FloatLiteralConvertible -let json: JSON = 2.8765 -``` -```swift -//DictionaryLiteralConvertible -let json: JSON = ["I":"am", "a":"json"] -``` -```swift -//ArrayLiteralConvertible -let json: JSON = ["I", "am", "a", "json"] -``` -```swift -//NilLiteralConvertible -let json: JSON = nil -``` -```swift -//With subscript in array -var json: JSON = [1,2,3] -json[0] = 100 -json[1] = 200 -json[2] = 300 -json[999] = 300 //Don't worry, nothing will happen -``` -```swift -//With subscript in dictionary -var json: JSON = ["name": "Jack", "age": 25] -json["name"] = "Mike" -json["age"] = "25" //It's OK to set String -json["address"] = "L.A." // Add the "address": "L.A." in json -``` -```swift -//Array & Dictionary -var json: JSON = ["name": "Jack", "age": 25, "list": ["a", "b", "c", ["what": "this"]]] -json["list"][3]["what"] = "that" -json["list",3,"what"] = "that" -let path = ["list",3,"what"] -json[path] = "that" -``` -##Work with Alamofire - -SwiftyJSON nicely wraps the result of the Alamofire JSON response handler: -```swift -Alamofire.request(.GET, url).validate().responseJSON { response in - switch response.result { - case .Success: - if let value = response.result.value { - let json = JSON(value) - print("JSON: \(json)") - } - case .Failure(let error): - print(error) - } -} -``` diff --git a/Examples/Custom Money/Pods/SwiftyJSON/Source/SwiftyJSON.swift b/Examples/Custom Money/Pods/SwiftyJSON/Source/SwiftyJSON.swift deleted file mode 100644 index fa8635e..0000000 --- a/Examples/Custom Money/Pods/SwiftyJSON/Source/SwiftyJSON.swift +++ /dev/null @@ -1,1376 +0,0 @@ -// SwiftyJSON.swift -// -// Copyright (c) 2014 Ruoyu Fu, Pinglin Tang -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import Foundation - -// MARK: - Error - -///Error domain -public let ErrorDomain: String = "SwiftyJSONErrorDomain" - -///Error code -public let ErrorUnsupportedType: Int = 999 -public let ErrorIndexOutOfBounds: Int = 900 -public let ErrorWrongType: Int = 901 -public let ErrorNotExist: Int = 500 -public let ErrorInvalidJSON: Int = 490 - -// MARK: - JSON Type - -/** -JSON's type definitions. - -See http://www.json.org -*/ -public enum Type :Int{ - - case Number - case String - case Bool - case Array - case Dictionary - case Null - case Unknown -} - -// MARK: - JSON Base - -public struct JSON { - - /** - Creates a JSON using the data. - - - parameter data: The NSData used to convert to json.Top level object in data is an NSArray or NSDictionary - - parameter opt: The JSON serialization reading options. `.AllowFragments` by default. - - parameter error: error The NSErrorPointer used to return the error. `nil` by default. - - - returns: The created JSON - */ - public init(data:NSData, options opt: NSJSONReadingOptions = .AllowFragments, error: NSErrorPointer = nil) { - do { - let object: AnyObject = try NSJSONSerialization.JSONObjectWithData(data, options: opt) - self.init(object) - } catch let aError as NSError { - if error != nil { - error.memory = aError - } - self.init(NSNull()) - } - } - - /** - Create a JSON from JSON string - - parameter string: Normal json string like '{"a":"b"}' - - - returns: The created JSON - */ - public static func parse(string:String) -> JSON { - return string.dataUsingEncoding(NSUTF8StringEncoding) - .flatMap({JSON(data: $0)}) ?? JSON(NSNull()) - } - - /** - Creates a JSON using the object. - - - parameter object: The object must have the following properties: All objects are NSString/String, NSNumber/Int/Float/Double/Bool, NSArray/Array, NSDictionary/Dictionary, or NSNull; All dictionary keys are NSStrings/String; NSNumbers are not NaN or infinity. - - - returns: The created JSON - */ - public init(_ object: AnyObject) { - self.object = object - } - - /** - Creates a JSON from a [JSON] - - - parameter jsonArray: A Swift array of JSON objects - - - returns: The created JSON - */ - public init(_ jsonArray:[JSON]) { - self.init(jsonArray.map { $0.object }) - } - - /** - Creates a JSON from a [String: JSON] - - - parameter jsonDictionary: A Swift dictionary of JSON objects - - - returns: The created JSON - */ - public init(_ jsonDictionary:[String: JSON]) { - var dictionary = [String: AnyObject]() - for (key, json) in jsonDictionary { - dictionary[key] = json.object - } - self.init(dictionary) - } - - /// Private object - private var rawArray: [AnyObject] = [] - private var rawDictionary: [String : AnyObject] = [:] - private var rawString: String = "" - private var rawNumber: NSNumber = 0 - private var rawNull: NSNull = NSNull() - /// Private type - private var _type: Type = .Null - /// prviate error - private var _error: NSError? = nil - - /// Object in JSON - public var object: AnyObject { - get { - switch self.type { - case .Array: - return self.rawArray - case .Dictionary: - return self.rawDictionary - case .String: - return self.rawString - case .Number: - return self.rawNumber - case .Bool: - return self.rawNumber - default: - return self.rawNull - } - } - set { - _error = nil - switch newValue { - case let number as NSNumber: - if number.isBool { - _type = .Bool - } else { - _type = .Number - } - self.rawNumber = number - case let string as String: - _type = .String - self.rawString = string - case _ as NSNull: - _type = .Null - case let array as [AnyObject]: - _type = .Array - self.rawArray = array - case let dictionary as [String : AnyObject]: - _type = .Dictionary - self.rawDictionary = dictionary - default: - _type = .Unknown - _error = NSError(domain: ErrorDomain, code: ErrorUnsupportedType, userInfo: [NSLocalizedDescriptionKey: "It is a unsupported type"]) - } - } - } - - /// json type - public var type: Type { get { return _type } } - - /// Error in JSON - public var error: NSError? { get { return self._error } } - - /// The static null json - @available(*, unavailable, renamed="null") - public static var nullJSON: JSON { get { return null } } - public static var null: JSON { get { return JSON(NSNull()) } } -} - -// MARK: - CollectionType, SequenceType, Indexable -extension JSON : Swift.CollectionType, Swift.SequenceType, Swift.Indexable { - - public typealias Generator = JSONGenerator - - public typealias Index = JSONIndex - - public var startIndex: JSON.Index { - switch self.type { - case .Array: - return JSONIndex(arrayIndex: self.rawArray.startIndex) - case .Dictionary: - return JSONIndex(dictionaryIndex: self.rawDictionary.startIndex) - default: - return JSONIndex() - } - } - - public var endIndex: JSON.Index { - switch self.type { - case .Array: - return JSONIndex(arrayIndex: self.rawArray.endIndex) - case .Dictionary: - return JSONIndex(dictionaryIndex: self.rawDictionary.endIndex) - default: - return JSONIndex() - } - } - - public subscript (position: JSON.Index) -> JSON.Generator.Element { - switch self.type { - case .Array: - return (String(position.arrayIndex), JSON(self.rawArray[position.arrayIndex!])) - case .Dictionary: - let (key, value) = self.rawDictionary[position.dictionaryIndex!] - return (key, JSON(value)) - default: - return ("", JSON.null) - } - } - - /// If `type` is `.Array` or `.Dictionary`, return `array.empty` or `dictonary.empty` otherwise return `true`. - public var isEmpty: Bool { - get { - switch self.type { - case .Array: - return self.rawArray.isEmpty - case .Dictionary: - return self.rawDictionary.isEmpty - default: - return true - } - } - } - - /// If `type` is `.Array` or `.Dictionary`, return `array.count` or `dictonary.count` otherwise return `0`. - public var count: Int { - switch self.type { - case .Array: - return self.rawArray.count - case .Dictionary: - return self.rawDictionary.count - default: - return 0 - } - } - - public func underestimateCount() -> Int { - switch self.type { - case .Array: - return self.rawArray.underestimateCount() - case .Dictionary: - return self.rawDictionary.underestimateCount() - default: - return 0 - } - } - - /** - If `type` is `.Array` or `.Dictionary`, return a generator over the elements like `Array` or `Dictionary`, otherwise return a generator over empty. - - - returns: Return a *generator* over the elements of JSON. - */ - public func generate() -> JSON.Generator { - return JSON.Generator(self) - } -} - -public struct JSONIndex: ForwardIndexType, _Incrementable, Equatable, Comparable { - - let arrayIndex: Int? - let dictionaryIndex: DictionaryIndex? - - let type: Type - - init(){ - self.arrayIndex = nil - self.dictionaryIndex = nil - self.type = .Unknown - } - - init(arrayIndex: Int) { - self.arrayIndex = arrayIndex - self.dictionaryIndex = nil - self.type = .Array - } - - init(dictionaryIndex: DictionaryIndex) { - self.arrayIndex = nil - self.dictionaryIndex = dictionaryIndex - self.type = .Dictionary - } - - public func successor() -> JSONIndex { - switch self.type { - case .Array: - return JSONIndex(arrayIndex: self.arrayIndex!.successor()) - case .Dictionary: - return JSONIndex(dictionaryIndex: self.dictionaryIndex!.successor()) - default: - return JSONIndex() - } - } -} - -public func ==(lhs: JSONIndex, rhs: JSONIndex) -> Bool { - switch (lhs.type, rhs.type) { - case (.Array, .Array): - return lhs.arrayIndex == rhs.arrayIndex - case (.Dictionary, .Dictionary): - return lhs.dictionaryIndex == rhs.dictionaryIndex - default: - return false - } -} - -public func <(lhs: JSONIndex, rhs: JSONIndex) -> Bool { - switch (lhs.type, rhs.type) { - case (.Array, .Array): - return lhs.arrayIndex < rhs.arrayIndex - case (.Dictionary, .Dictionary): - return lhs.dictionaryIndex < rhs.dictionaryIndex - default: - return false - } -} - -public func <=(lhs: JSONIndex, rhs: JSONIndex) -> Bool { - switch (lhs.type, rhs.type) { - case (.Array, .Array): - return lhs.arrayIndex <= rhs.arrayIndex - case (.Dictionary, .Dictionary): - return lhs.dictionaryIndex <= rhs.dictionaryIndex - default: - return false - } -} - -public func >=(lhs: JSONIndex, rhs: JSONIndex) -> Bool { - switch (lhs.type, rhs.type) { - case (.Array, .Array): - return lhs.arrayIndex >= rhs.arrayIndex - case (.Dictionary, .Dictionary): - return lhs.dictionaryIndex >= rhs.dictionaryIndex - default: - return false - } -} - -public func >(lhs: JSONIndex, rhs: JSONIndex) -> Bool { - switch (lhs.type, rhs.type) { - case (.Array, .Array): - return lhs.arrayIndex > rhs.arrayIndex - case (.Dictionary, .Dictionary): - return lhs.dictionaryIndex > rhs.dictionaryIndex - default: - return false - } -} - -public struct JSONGenerator : GeneratorType { - - public typealias Element = (String, JSON) - - private let type: Type - private var dictionayGenerate: DictionaryGenerator? - private var arrayGenerate: IndexingGenerator<[AnyObject]>? - private var arrayIndex: Int = 0 - - init(_ json: JSON) { - self.type = json.type - if type == .Array { - self.arrayGenerate = json.rawArray.generate() - }else { - self.dictionayGenerate = json.rawDictionary.generate() - } - } - - public mutating func next() -> JSONGenerator.Element? { - switch self.type { - case .Array: - if let o = self.arrayGenerate?.next() { - return (String(self.arrayIndex++), JSON(o)) - } else { - return nil - } - case .Dictionary: - if let (k, v): (String, AnyObject) = self.dictionayGenerate?.next() { - return (k, JSON(v)) - } else { - return nil - } - default: - return nil - } - } -} - -// MARK: - Subscript - -/** -* To mark both String and Int can be used in subscript. -*/ -public enum JSONKey { - case Index(Int) - case Key(String) -} - -public protocol JSONSubscriptType { - var jsonKey:JSONKey { get } -} - -extension Int: JSONSubscriptType { - public var jsonKey:JSONKey { - return JSONKey.Index(self) - } -} - -extension String: JSONSubscriptType { - public var jsonKey:JSONKey { - return JSONKey.Key(self) - } -} - -extension JSON { - - /// If `type` is `.Array`, return json which's object is `array[index]`, otherwise return null json with error. - private subscript(index index: Int) -> JSON { - get { - if self.type != .Array { - var r = JSON.null - r._error = self._error ?? NSError(domain: ErrorDomain, code: ErrorWrongType, userInfo: [NSLocalizedDescriptionKey: "Array[\(index)] failure, It is not an array"]) - return r - } else if index >= 0 && index < self.rawArray.count { - return JSON(self.rawArray[index]) - } else { - var r = JSON.null - r._error = NSError(domain: ErrorDomain, code:ErrorIndexOutOfBounds , userInfo: [NSLocalizedDescriptionKey: "Array[\(index)] is out of bounds"]) - return r - } - } - set { - if self.type == .Array { - if self.rawArray.count > index && newValue.error == nil { - self.rawArray[index] = newValue.object - } - } - } - } - - /// If `type` is `.Dictionary`, return json which's object is `dictionary[key]` , otherwise return null json with error. - private subscript(key key: String) -> JSON { - get { - var r = JSON.null - if self.type == .Dictionary { - if let o = self.rawDictionary[key] { - r = JSON(o) - } else { - r._error = NSError(domain: ErrorDomain, code: ErrorNotExist, userInfo: [NSLocalizedDescriptionKey: "Dictionary[\"\(key)\"] does not exist"]) - } - } else { - r._error = self._error ?? NSError(domain: ErrorDomain, code: ErrorWrongType, userInfo: [NSLocalizedDescriptionKey: "Dictionary[\"\(key)\"] failure, It is not an dictionary"]) - } - return r - } - set { - if self.type == .Dictionary && newValue.error == nil { - self.rawDictionary[key] = newValue.object - } - } - } - - /// If `sub` is `Int`, return `subscript(index:)`; If `sub` is `String`, return `subscript(key:)`. - private subscript(sub sub: JSONSubscriptType) -> JSON { - get { - switch sub.jsonKey { - case .Index(let index): return self[index: index] - case .Key(let key): return self[key: key] - } - } - set { - switch sub.jsonKey { - case .Index(let index): self[index: index] = newValue - case .Key(let key): self[key: key] = newValue - } - } - } - - /** - Find a json in the complex data structuresby using the Int/String's array. - - - parameter path: The target json's path. Example: - - let json = JSON[data] - let path = [9,"list","person","name"] - let name = json[path] - - The same as: let name = json[9]["list"]["person"]["name"] - - - returns: Return a json found by the path or a null json with error - */ - public subscript(path: [JSONSubscriptType]) -> JSON { - get { - return path.reduce(self) { $0[sub: $1] } - } - set { - switch path.count { - case 0: - return - case 1: - self[sub:path[0]].object = newValue.object - default: - var aPath = path; aPath.removeAtIndex(0) - var nextJSON = self[sub: path[0]] - nextJSON[aPath] = newValue - self[sub: path[0]] = nextJSON - } - } - } - - /** - Find a json in the complex data structuresby using the Int/String's array. - - - parameter path: The target json's path. Example: - - let name = json[9,"list","person","name"] - - The same as: let name = json[9]["list"]["person"]["name"] - - - returns: Return a json found by the path or a null json with error - */ - public subscript(path: JSONSubscriptType...) -> JSON { - get { - return self[path] - } - set { - self[path] = newValue - } - } -} - -// MARK: - LiteralConvertible - -extension JSON: Swift.StringLiteralConvertible { - - public init(stringLiteral value: StringLiteralType) { - self.init(value) - } - - public init(extendedGraphemeClusterLiteral value: StringLiteralType) { - self.init(value) - } - - public init(unicodeScalarLiteral value: StringLiteralType) { - self.init(value) - } -} - -extension JSON: Swift.IntegerLiteralConvertible { - - public init(integerLiteral value: IntegerLiteralType) { - self.init(value) - } -} - -extension JSON: Swift.BooleanLiteralConvertible { - - public init(booleanLiteral value: BooleanLiteralType) { - self.init(value) - } -} - -extension JSON: Swift.FloatLiteralConvertible { - - public init(floatLiteral value: FloatLiteralType) { - self.init(value) - } -} - -extension JSON: Swift.DictionaryLiteralConvertible { - - public init(dictionaryLiteral elements: (String, AnyObject)...) { - self.init(elements.reduce([String : AnyObject]()){(dictionary: [String : AnyObject], element:(String, AnyObject)) -> [String : AnyObject] in - var d = dictionary - d[element.0] = element.1 - return d - }) - } -} - -extension JSON: Swift.ArrayLiteralConvertible { - - public init(arrayLiteral elements: AnyObject...) { - self.init(elements) - } -} - -extension JSON: Swift.NilLiteralConvertible { - - public init(nilLiteral: ()) { - self.init(NSNull()) - } -} - -// MARK: - Raw - -extension JSON: Swift.RawRepresentable { - - public init?(rawValue: AnyObject) { - if JSON(rawValue).type == .Unknown { - return nil - } else { - self.init(rawValue) - } - } - - public var rawValue: AnyObject { - return self.object - } - - public func rawData(options opt: NSJSONWritingOptions = NSJSONWritingOptions(rawValue: 0)) throws -> NSData { - guard NSJSONSerialization.isValidJSONObject(self.object) else { - throw NSError(domain: ErrorDomain, code: ErrorInvalidJSON, userInfo: [NSLocalizedDescriptionKey: "JSON is invalid"]) - } - - return try NSJSONSerialization.dataWithJSONObject(self.object, options: opt) - } - - public func rawString(encoding: UInt = NSUTF8StringEncoding, options opt: NSJSONWritingOptions = .PrettyPrinted) -> String? { - switch self.type { - case .Array, .Dictionary: - do { - let data = try self.rawData(options: opt) - return NSString(data: data, encoding: encoding) as? String - } catch _ { - return nil - } - case .String: - return self.rawString - case .Number: - return self.rawNumber.stringValue - case .Bool: - return self.rawNumber.boolValue.description - case .Null: - return "null" - default: - return nil - } - } -} - -// MARK: - Printable, DebugPrintable - -extension JSON: Swift.Printable, Swift.DebugPrintable { - - public var description: String { - if let string = self.rawString(options:.PrettyPrinted) { - return string - } else { - return "unknown" - } - } - - public var debugDescription: String { - return description - } -} - -// MARK: - Array - -extension JSON { - - //Optional [JSON] - public var array: [JSON]? { - get { - if self.type == .Array { - return self.rawArray.map{ JSON($0) } - } else { - return nil - } - } - } - - //Non-optional [JSON] - public var arrayValue: [JSON] { - get { - return self.array ?? [] - } - } - - //Optional [AnyObject] - public var arrayObject: [AnyObject]? { - get { - switch self.type { - case .Array: - return self.rawArray - default: - return nil - } - } - set { - if let array = newValue { - self.object = array - } else { - self.object = NSNull() - } - } - } -} - -// MARK: - Dictionary - -extension JSON { - - //Optional [String : JSON] - public var dictionary: [String : JSON]? { - if self.type == .Dictionary { - return self.rawDictionary.reduce([String : JSON]()) { (dictionary: [String : JSON], element: (String, AnyObject)) -> [String : JSON] in - var d = dictionary - d[element.0] = JSON(element.1) - return d - } - } else { - return nil - } - } - - //Non-optional [String : JSON] - public var dictionaryValue: [String : JSON] { - return self.dictionary ?? [:] - } - - //Optional [String : AnyObject] - public var dictionaryObject: [String : AnyObject]? { - get { - switch self.type { - case .Dictionary: - return self.rawDictionary - default: - return nil - } - } - set { - if let v = newValue { - self.object = v - } else { - self.object = NSNull() - } - } - } -} - -// MARK: - Bool - -extension JSON: Swift.BooleanType { - - //Optional bool - public var bool: Bool? { - get { - switch self.type { - case .Bool: - return self.rawNumber.boolValue - default: - return nil - } - } - set { - if let newValue = newValue { - self.object = NSNumber(bool: newValue) - } else { - self.object = NSNull() - } - } - } - - //Non-optional bool - public var boolValue: Bool { - get { - switch self.type { - case .Bool, .Number, .String: - return self.object.boolValue - default: - return false - } - } - set { - self.object = NSNumber(bool: newValue) - } - } -} - -// MARK: - String - -extension JSON { - - //Optional string - public var string: String? { - get { - switch self.type { - case .String: - return self.object as? String - default: - return nil - } - } - set { - if let newValue = newValue { - self.object = NSString(string:newValue) - } else { - self.object = NSNull() - } - } - } - - //Non-optional string - public var stringValue: String { - get { - switch self.type { - case .String: - return self.object as? String ?? "" - case .Number: - return self.object.stringValue - case .Bool: - return (self.object as? Bool).map { String($0) } ?? "" - default: - return "" - } - } - set { - self.object = NSString(string:newValue) - } - } -} - -// MARK: - Number -extension JSON { - - //Optional number - public var number: NSNumber? { - get { - switch self.type { - case .Number, .Bool: - return self.rawNumber - default: - return nil - } - } - set { - self.object = newValue ?? NSNull() - } - } - - //Non-optional number - public var numberValue: NSNumber { - get { - switch self.type { - case .String: - let decimal = NSDecimalNumber(string: self.object as? String) - if decimal == NSDecimalNumber.notANumber() { // indicates parse error - return NSDecimalNumber.zero() - } - return decimal - case .Number, .Bool: - return self.object as? NSNumber ?? NSNumber(int: 0) - default: - return NSNumber(double: 0.0) - } - } - set { - self.object = newValue - } - } -} - -//MARK: - Null -extension JSON { - - public var null: NSNull? { - get { - switch self.type { - case .Null: - return self.rawNull - default: - return nil - } - } - set { - self.object = NSNull() - } - } - public func isExists() -> Bool{ - if let errorValue = error where errorValue.code == ErrorNotExist{ - return false - } - return true - } -} - -//MARK: - URL -extension JSON { - - //Optional URL - public var URL: NSURL? { - get { - switch self.type { - case .String: - if let encodedString_ = self.rawString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) { - return NSURL(string: encodedString_) - } else { - return nil - } - default: - return nil - } - } - set { - self.object = newValue?.absoluteString ?? NSNull() - } - } -} - -// MARK: - Int, Double, Float, Int8, Int16, Int32, Int64 - -extension JSON { - - public var double: Double? { - get { - return self.number?.doubleValue - } - set { - if let newValue = newValue { - self.object = NSNumber(double: newValue) - } else { - self.object = NSNull() - } - } - } - - public var doubleValue: Double { - get { - return self.numberValue.doubleValue - } - set { - self.object = NSNumber(double: newValue) - } - } - - public var float: Float? { - get { - return self.number?.floatValue - } - set { - if let newValue = newValue { - self.object = NSNumber(float: newValue) - } else { - self.object = NSNull() - } - } - } - - public var floatValue: Float { - get { - return self.numberValue.floatValue - } - set { - self.object = NSNumber(float: newValue) - } - } - - public var int: Int? { - get { - return self.number?.longValue - } - set { - if let newValue = newValue { - self.object = NSNumber(integer: newValue) - } else { - self.object = NSNull() - } - } - } - - public var intValue: Int { - get { - return self.numberValue.integerValue - } - set { - self.object = NSNumber(integer: newValue) - } - } - - public var uInt: UInt? { - get { - return self.number?.unsignedLongValue - } - set { - if let newValue = newValue { - self.object = NSNumber(unsignedLong: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uIntValue: UInt { - get { - return self.numberValue.unsignedLongValue - } - set { - self.object = NSNumber(unsignedLong: newValue) - } - } - - public var int8: Int8? { - get { - return self.number?.charValue - } - set { - if let newValue = newValue { - self.object = NSNumber(char: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int8Value: Int8 { - get { - return self.numberValue.charValue - } - set { - self.object = NSNumber(char: newValue) - } - } - - public var uInt8: UInt8? { - get { - return self.number?.unsignedCharValue - } - set { - if let newValue = newValue { - self.object = NSNumber(unsignedChar: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt8Value: UInt8 { - get { - return self.numberValue.unsignedCharValue - } - set { - self.object = NSNumber(unsignedChar: newValue) - } - } - - public var int16: Int16? { - get { - return self.number?.shortValue - } - set { - if let newValue = newValue { - self.object = NSNumber(short: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int16Value: Int16 { - get { - return self.numberValue.shortValue - } - set { - self.object = NSNumber(short: newValue) - } - } - - public var uInt16: UInt16? { - get { - return self.number?.unsignedShortValue - } - set { - if let newValue = newValue { - self.object = NSNumber(unsignedShort: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt16Value: UInt16 { - get { - return self.numberValue.unsignedShortValue - } - set { - self.object = NSNumber(unsignedShort: newValue) - } - } - - public var int32: Int32? { - get { - return self.number?.intValue - } - set { - if let newValue = newValue { - self.object = NSNumber(int: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int32Value: Int32 { - get { - return self.numberValue.intValue - } - set { - self.object = NSNumber(int: newValue) - } - } - - public var uInt32: UInt32? { - get { - return self.number?.unsignedIntValue - } - set { - if let newValue = newValue { - self.object = NSNumber(unsignedInt: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt32Value: UInt32 { - get { - return self.numberValue.unsignedIntValue - } - set { - self.object = NSNumber(unsignedInt: newValue) - } - } - - public var int64: Int64? { - get { - return self.number?.longLongValue - } - set { - if let newValue = newValue { - self.object = NSNumber(longLong: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int64Value: Int64 { - get { - return self.numberValue.longLongValue - } - set { - self.object = NSNumber(longLong: newValue) - } - } - - public var uInt64: UInt64? { - get { - return self.number?.unsignedLongLongValue - } - set { - if let newValue = newValue { - self.object = NSNumber(unsignedLongLong: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt64Value: UInt64 { - get { - return self.numberValue.unsignedLongLongValue - } - set { - self.object = NSNumber(unsignedLongLong: newValue) - } - } -} - -//MARK: - Comparable -extension JSON : Swift.Comparable {} - -public func ==(lhs: JSON, rhs: JSON) -> Bool { - - switch (lhs.type, rhs.type) { - case (.Number, .Number): - return lhs.rawNumber == rhs.rawNumber - case (.String, .String): - return lhs.rawString == rhs.rawString - case (.Bool, .Bool): - return lhs.rawNumber.boolValue == rhs.rawNumber.boolValue - case (.Array, .Array): - return lhs.rawArray as NSArray == rhs.rawArray as NSArray - case (.Dictionary, .Dictionary): - return lhs.rawDictionary as NSDictionary == rhs.rawDictionary as NSDictionary - case (.Null, .Null): - return true - default: - return false - } -} - -public func <=(lhs: JSON, rhs: JSON) -> Bool { - - switch (lhs.type, rhs.type) { - case (.Number, .Number): - return lhs.rawNumber <= rhs.rawNumber - case (.String, .String): - return lhs.rawString <= rhs.rawString - case (.Bool, .Bool): - return lhs.rawNumber.boolValue == rhs.rawNumber.boolValue - case (.Array, .Array): - return lhs.rawArray as NSArray == rhs.rawArray as NSArray - case (.Dictionary, .Dictionary): - return lhs.rawDictionary as NSDictionary == rhs.rawDictionary as NSDictionary - case (.Null, .Null): - return true - default: - return false - } -} - -public func >=(lhs: JSON, rhs: JSON) -> Bool { - - switch (lhs.type, rhs.type) { - case (.Number, .Number): - return lhs.rawNumber >= rhs.rawNumber - case (.String, .String): - return lhs.rawString >= rhs.rawString - case (.Bool, .Bool): - return lhs.rawNumber.boolValue == rhs.rawNumber.boolValue - case (.Array, .Array): - return lhs.rawArray as NSArray == rhs.rawArray as NSArray - case (.Dictionary, .Dictionary): - return lhs.rawDictionary as NSDictionary == rhs.rawDictionary as NSDictionary - case (.Null, .Null): - return true - default: - return false - } -} - -public func >(lhs: JSON, rhs: JSON) -> Bool { - - switch (lhs.type, rhs.type) { - case (.Number, .Number): - return lhs.rawNumber > rhs.rawNumber - case (.String, .String): - return lhs.rawString > rhs.rawString - default: - return false - } -} - -public func <(lhs: JSON, rhs: JSON) -> Bool { - - switch (lhs.type, rhs.type) { - case (.Number, .Number): - return lhs.rawNumber < rhs.rawNumber - case (.String, .String): - return lhs.rawString < rhs.rawString - default: - return false - } -} - -private let trueNumber = NSNumber(bool: true) -private let falseNumber = NSNumber(bool: false) -private let trueObjCType = String.fromCString(trueNumber.objCType) -private let falseObjCType = String.fromCString(falseNumber.objCType) - -// MARK: - NSNumber: Comparable - -extension NSNumber { - var isBool:Bool { - get { - let objCType = String.fromCString(self.objCType) - if (self.compare(trueNumber) == NSComparisonResult.OrderedSame && objCType == trueObjCType) - || (self.compare(falseNumber) == NSComparisonResult.OrderedSame && objCType == falseObjCType){ - return true - } else { - return false - } - } - } -} - -func ==(lhs: NSNumber, rhs: NSNumber) -> Bool { - switch (lhs.isBool, rhs.isBool) { - case (false, true): - return false - case (true, false): - return false - default: - return lhs.compare(rhs) == NSComparisonResult.OrderedSame - } -} - -func !=(lhs: NSNumber, rhs: NSNumber) -> Bool { - return !(lhs == rhs) -} - -func <(lhs: NSNumber, rhs: NSNumber) -> Bool { - - switch (lhs.isBool, rhs.isBool) { - case (false, true): - return false - case (true, false): - return false - default: - return lhs.compare(rhs) == NSComparisonResult.OrderedAscending - } -} - -func >(lhs: NSNumber, rhs: NSNumber) -> Bool { - - switch (lhs.isBool, rhs.isBool) { - case (false, true): - return false - case (true, false): - return false - default: - return lhs.compare(rhs) == NSComparisonResult.OrderedDescending - } -} - -func <=(lhs: NSNumber, rhs: NSNumber) -> Bool { - - switch (lhs.isBool, rhs.isBool) { - case (false, true): - return false - case (true, false): - return false - default: - return lhs.compare(rhs) != NSComparisonResult.OrderedDescending - } -} - -func >=(lhs: NSNumber, rhs: NSNumber) -> Bool { - - switch (lhs.isBool, rhs.isBool) { - case (false, true): - return false - case (true, false): - return false - default: - return lhs.compare(rhs) != NSComparisonResult.OrderedAscending - } -} diff --git a/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist b/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist index a543516..42e2408 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.1 + 1.5.1 CFBundleSignature ???? CFBundleVersion diff --git a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.markdown b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.markdown index ad95a98..702d85f 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.markdown +++ b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.markdown @@ -27,55 +27,6 @@ SOFTWARE. -## Result - -The MIT License (MIT) - -Copyright (c) 2014 Rob Rix - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -## SwiftyJSON - -The MIT License (MIT) - -Copyright (c) 2014 Ruoyu Fu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ## ValueCoding The MIT License (MIT) diff --git a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.plist b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.plist index 280591b..3086e67 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.plist +++ b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-acknowledgements.plist @@ -46,63 +46,6 @@ SOFTWARE. FooterText The MIT License (MIT) -Copyright (c) 2014 Rob Rix - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - Title - Result - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2014 Ruoyu Fu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - Title - SwiftyJSON - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - Copyright (c) 2015 Daniel Thorpe Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-frameworks.sh b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-frameworks.sh index 0aaaa30..5ed60b5 100755 --- a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-frameworks.sh +++ b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money-frameworks.sh @@ -85,13 +85,9 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "Pods-Custom Money/Money.framework" - install_framework "Pods-Custom Money/Result.framework" - install_framework "Pods-Custom Money/SwiftyJSON.framework" install_framework "Pods-Custom Money/ValueCoding.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "Pods-Custom Money/Money.framework" - install_framework "Pods-Custom Money/Result.framework" - install_framework "Pods-Custom Money/SwiftyJSON.framework" install_framework "Pods-Custom Money/ValueCoding.framework" fi diff --git a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.debug.xcconfig b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.debug.xcconfig index 9e21ee8..d5604d6 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.debug.xcconfig +++ b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.debug.xcconfig @@ -1,8 +1,8 @@ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/Money.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/Result.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/SwiftyJSON.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/ValueCoding.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "Money" -framework "Result" -framework "SwiftyJSON" -framework "ValueCoding" +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/Money.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/ValueCoding.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "Money" -framework "ValueCoding" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-Custom Money PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.release.xcconfig b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.release.xcconfig index 9e21ee8..d5604d6 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.release.xcconfig +++ b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Pods-Custom Money.release.xcconfig @@ -1,8 +1,8 @@ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/Money.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/Result.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/SwiftyJSON.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/ValueCoding.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "Money" -framework "Result" -framework "SwiftyJSON" -framework "ValueCoding" +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/Money.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/ValueCoding.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "Money" -framework "ValueCoding" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-Custom Money PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist b/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist deleted file mode 100644 index 513ed9d..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Result-dummy.m b/Examples/Custom Money/Pods/Target Support Files/Result/Result-dummy.m deleted file mode 100644 index ba47f61..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Result-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Result : NSObject -@end -@implementation PodsDummy_Result -@end diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Result-prefix.pch b/Examples/Custom Money/Pods/Target Support Files/Result/Result-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Result-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Result-umbrella.h b/Examples/Custom Money/Pods/Target Support Files/Result/Result-umbrella.h deleted file mode 100644 index 4575ce0..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Result-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double ResultVersionNumber; -FOUNDATION_EXPORT const unsigned char ResultVersionString[]; - diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Result.modulemap b/Examples/Custom Money/Pods/Target Support Files/Result/Result.modulemap deleted file mode 100644 index c5e6a4a..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Result.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Result { - umbrella header "Result-umbrella.h" - - export * - module * { export * } -} diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Result.xcconfig b/Examples/Custom Money/Pods/Target Support Files/Result/Result.xcconfig deleted file mode 100644 index 6783934..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Result.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Result" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist deleted file mode 100644 index 23e7588..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.3.2 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m deleted file mode 100644 index 3159bec..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftyJSON : NSObject -@end -@implementation PodsDummy_SwiftyJSON -@end diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h deleted file mode 100644 index ce00ad0..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double SwiftyJSONVersionNumber; -FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; - diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap deleted file mode 100644 index 6f41751..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SwiftyJSON { - umbrella header "SwiftyJSON-umbrella.h" - - export * - module * { export * } -} diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig deleted file mode 100644 index 6fb4cff..0000000 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwiftyJSON" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist b/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist index 9f5393b..ed58c09 100644 --- a/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.1.1 + 1.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/Examples/Custom Money/Pods/ValueCoding/README.md b/Examples/Custom Money/Pods/ValueCoding/README.md index 888f177..e61c69b 100644 --- a/Examples/Custom Money/Pods/ValueCoding/README.md +++ b/Examples/Custom Money/Pods/ValueCoding/README.md @@ -57,7 +57,7 @@ and likewise, decoding from unarchiving can be done: ```swift if let foo = Foo.decode(NSKeyedUnarchiver.unarchiveObjectWithData(data)) { - // etc, unarchive returns optionals when working with a single item. + // etc, decode returns optionals when working with a single item. } ``` diff --git a/Examples/Custom Money/Pods/ValueCoding/ValueCoding/ValueCoding.swift b/Examples/Custom Money/Pods/ValueCoding/ValueCoding/ValueCoding.swift index 623f02c..753d4fa 100644 --- a/Examples/Custom Money/Pods/ValueCoding/ValueCoding/ValueCoding.swift +++ b/Examples/Custom Money/Pods/ValueCoding/ValueCoding/ValueCoding.swift @@ -66,6 +66,10 @@ extension CodingType where ValueType: ValueCoding, ValueType.Coder == Self { internal static func decode(objects: S?) -> [ValueType] { return objects?.flatMap(decode) ?? [] } + + internal static func decode(objects: S?) -> [[ValueType]] { + return objects?.flatMap(decode) ?? [] + } } extension SequenceType where @@ -110,6 +114,16 @@ extension ValueCoding where Coder: NSCoding, Coder.ValueType == Self { return Coder.decode(objects) } + /** + Decodes the values from a sequence of sequence of coders, if possible + + - parameter objects: a `SequenceType` of `SequenceType` of `AnyObject`. + - returns: the array of arrays of values which were able to be unarchived. + */ + public static func decode(objects: S?) -> [[Self]] { + return Coder.decode(objects) + } + /** Encodes the value type into its Coder. @@ -131,7 +145,7 @@ extension SequenceType where Generator.Element.Coder.ValueType == Generator.Element { /** - Encodes the sequence of value types into a sequence of coders. + Encodes the sequence of value types into an array of coders. Typically this would be used inside of `encodeWithCoder:` when a sequence of values is @@ -146,6 +160,20 @@ extension SequenceType where } } +extension SequenceType where + Generator.Element: SequenceType, + Generator.Element.Generator.Element: ValueCoding, + Generator.Element.Generator.Element.Coder: NSCoding, + Generator.Element.Generator.Element.Coder.ValueType == Generator.Element.Generator.Element { + + /** + Encodes a sequence of sequences of value types into + an array of arrays of coders. + */ + public var encoded: [[Generator.Element.Generator.Element.Coder]] { + return map { $0.encoded } + } +} diff --git a/Money.podspec b/Money.podspec index 3902205..aa8a2e1 100644 --- a/Money.podspec +++ b/Money.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Money" - s.version = "1.5.0" + s.version = "1.5.1" s.summary = "Swift types for working with Money." s.description = <<-DESC @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.author = { "Daniel Thorpe" => "@danthorpe" } s.source = { :git => "https://github.com/danthorpe/Money.git", :tag => s.version.to_s } s.module_name = 'Money' - s.documentation_url = 'http://docs.danthorpe.me/money/1.4.2/index.html' + s.documentation_url = 'http://docs.danthorpe.me/money/1.5.1/index.html' s.social_media_url = 'https://twitter.com/danthorpe' s.requires_arc = true s.ios.deployment_target = '8.0' diff --git a/Supporting Files/Money.xcconfig b/Supporting Files/Money.xcconfig index 7c0150b..7287a96 100644 --- a/Supporting Files/Money.xcconfig +++ b/Supporting Files/Money.xcconfig @@ -6,7 +6,7 @@ // // -MONEY_VERSION = 1.5.0 +MONEY_VERSION = 1.5.1 APPLICATION_EXTENSION_API_ONLY = YES INFOPLIST_FILE = $(SRCROOT)/Supporting Files/Info.plist