├── .swift-version ├── CodableProperty ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── CodableProperty.swift │ └── CodableTransformer.swift ├── _Pods.xcodeproj ├── Example ├── Podfile ├── Pods │ ├── Target Support Files │ │ ├── CodableProperty │ │ │ ├── CodableProperty.modulemap │ │ │ ├── CodableProperty-dummy.m │ │ │ ├── CodableProperty-prefix.pch │ │ │ ├── CodableProperty-umbrella.h │ │ │ ├── CodableProperty.xcconfig │ │ │ └── CodableProperty-Info.plist │ │ └── Pods-CodableProperty_Tests │ │ │ ├── Pods-CodableProperty_Tests.modulemap │ │ │ ├── Pods-CodableProperty_Tests-dummy.m │ │ │ ├── Pods-CodableProperty_Tests-umbrella.h │ │ │ ├── Pods-CodableProperty_Tests.debug.xcconfig │ │ │ ├── Pods-CodableProperty_Tests.release.xcconfig │ │ │ ├── Pods-CodableProperty_Tests-Info.plist │ │ │ ├── Pods-CodableProperty_Tests-acknowledgements.markdown │ │ │ ├── Pods-CodableProperty_Tests-acknowledgements.plist │ │ │ └── Pods-CodableProperty_Tests-frameworks.sh │ ├── Manifest.lock │ ├── Local Podspecs │ │ └── CodableProperty.podspec.json │ └── Pods.xcodeproj │ │ └── project.pbxproj ├── CodableProperty.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── CodableProperty-Example.xcscheme │ └── project.pbxproj ├── CodableProperty.xcworkspace │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcworkspacedata ├── Podfile.lock └── Tests │ ├── Info.plist │ └── Tests.swift ├── .travis.yml ├── Package.swift ├── CHANGELOG.md ├── .gitignore ├── CodableProperty.podspec ├── LICENSE └── README.md /.swift-version: -------------------------------------------------------------------------------- 1 | 5.1 -------------------------------------------------------------------------------- /CodableProperty/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CodableProperty/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '8.0' 2 | use_frameworks! 3 | 4 | target 'CodableProperty_Tests' do 5 | pod 'CodableProperty', :path => '../' 6 | end 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CodableProperty/CodableProperty.modulemap: -------------------------------------------------------------------------------- 1 | framework module CodableProperty { 2 | umbrella header "CodableProperty-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CodableProperty/CodableProperty-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_CodableProperty : NSObject 3 | @end 4 | @implementation PodsDummy_CodableProperty 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CodableProperty_Tests { 2 | umbrella header "Pods-CodableProperty_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/CodableProperty.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CodableProperty_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CodableProperty_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CodableProperty/CodableProperty-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/CodableProperty.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/CodableProperty.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CodableProperty (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - CodableProperty (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | CodableProperty: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | CodableProperty: a9cfeecd21d75d32b0b7c13293c9f280f26d452b 13 | 14 | PODFILE CHECKSUM: 01144ccda2e0640af14029d1baafae098b17dabd 15 | 16 | COCOAPODS: 1.7.5 17 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CodableProperty (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - CodableProperty (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | CodableProperty: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | CodableProperty: a9cfeecd21d75d32b0b7c13293c9f280f26d452b 13 | 14 | PODFILE CHECKSUM: 01144ccda2e0640af14029d1baafae098b17dabd 15 | 16 | COCOAPODS: 1.7.5 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CodableProperty/CodableProperty-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double CodablePropertyVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char CodablePropertyVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: osx 2 | osx_image: xcode11 3 | cache: cocoapods 4 | # podfile: Example/Podfile 5 | 6 | before_install: 7 | - gem install cocoapods # Since Travis is not always on latest version 8 | # - pod install --project-directory=Example 9 | 10 | script: 11 | # - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/CodableProperty.xcworkspace -scheme CodableProperty-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 12 | - pod lib lint 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CodableProperty_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CodableProperty_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.1 2 | 3 | import PackageDescription 4 | 5 | let package = Package( 6 | name: "CodableProperty", 7 | platforms: [ 8 | .watchOS(.v2), 9 | .iOS(.v8), 10 | .macOS(.v10_10), 11 | .tvOS(.v9), 12 | ], 13 | products: [ 14 | .library(name: "CodableProperty", targets: ["CodableProperty"]), 15 | ], 16 | targets: [ 17 | .target(name: "CodableProperty", path: "./CodableProperty/Classes") 18 | ], 19 | swiftLanguageVersions: [.v5] 20 | ) 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CodableProperty/CodableProperty.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CodableProperty 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [1.0.0](https://github.com/gcharita/CodableProperty/releases/tag/1.0.0) (2019-09-19) 4 | 5 | - Changed `DecodableTransformer`'s and `EncodableTransformer`'s static function to instance functions 6 | 7 | ## [0.2.1](https://github.com/gcharita/CodableProperty/releases/tag/0.2.1) (2019-08-06) 8 | 9 | - Fixed internal `init(wrappedValue:)` compiler error in Xcode 11 beta 5 10 | 11 | ## [0.2.0](https://github.com/gcharita/CodableProperty/releases/tag/0.2.0) (2019-07-12) 12 | 13 | - Added Swift Package Manager support 14 | 15 | ## [0.1.0](https://github.com/gcharita/CodableProperty/releases/tag/0.1.0) (2019-07-11) 16 | 17 | - Initial release 18 | - `CodableProperty`, `EncodableProperty` and `DecodableProperty` 19 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CodableProperty" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CodableProperty/CodableProperty.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "CodableProperty" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CodableProperty" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CodableProperty/CodableProperty.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "CodableProperty" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | 39 | # Swift Package Manager 40 | .build/ 41 | .swiftpm/xcode -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/CodableProperty.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CodableProperty", 3 | "version": "1.0.0", 4 | "summary": "Easy transforming of Codable types written in Swift", 5 | "description": "CodableProperty is a framework written in Swift that works along with the build in `Codable` protocol.\nUses the new `propertyWrapper` feature of Swift 5.1 to make type transformation easier.", 6 | "homepage": "https://github.com/gcharita/CodableProperty", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "gcharita": "chgiorgos13@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/gcharita/CodableProperty.git", 16 | "tag": "1.0.0" 17 | }, 18 | "platforms": { 19 | "watchos": "2.0", 20 | "ios": "8.0", 21 | "osx": "10.9", 22 | "tvos": "9.0" 23 | }, 24 | "source_files": "CodableProperty/Classes/**/*", 25 | "swift_versions": "5.1", 26 | "swift_version": "5.1" 27 | } 28 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CodableProperty/CodableProperty-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /CodableProperty.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'CodableProperty' 3 | s.version = '1.0.0' 4 | s.summary = 'Easy transforming of Codable types written in Swift' 5 | 6 | s.description = <<-DESC 7 | CodableProperty is a framework written in Swift that works along with the build in `Codable` protocol. 8 | Uses the new `propertyWrapper` feature of Swift 5.1 to make type transformation easier. 9 | DESC 10 | 11 | s.homepage = 'https://github.com/gcharita/CodableProperty' 12 | s.license = { :type => 'MIT', :file => 'LICENSE' } 13 | s.author = { 'gcharita' => 'chgiorgos13@gmail.com' } 14 | s.source = { :git => 'https://github.com/gcharita/CodableProperty.git', :tag => s.version.to_s } 15 | 16 | s.watchos.deployment_target = '2.0' 17 | s.ios.deployment_target = '8.0' 18 | s.osx.deployment_target = '10.9' 19 | s.tvos.deployment_target = '9.0' 20 | 21 | s.source_files = 'CodableProperty/Classes/**/*' 22 | 23 | s.swift_version = '5.1' 24 | end 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 gcharita 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## CodableProperty 5 | 6 | Copyright (c) 2019 gcharita 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /CodableProperty/Classes/CodableProperty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CodableProperty.swift 3 | // CodableProperty 4 | // 5 | // Created by Giorgos Charitakis on 10/07/2019. 6 | // 7 | 8 | import Foundation 9 | 10 | /// A property that conforms to `Codable` protocol and can be transformed from the specified `CodableTransformer` 11 | @propertyWrapper public struct CodableProperty: Codable { 12 | public var wrappedValue: Transformer.Value 13 | private let transformer = Transformer() 14 | 15 | public init(from decoder: Decoder) throws { 16 | wrappedValue = try transformer.value(from: decoder) 17 | } 18 | 19 | public func encode(to encoder: Encoder) throws { 20 | try transformer.encode(value: wrappedValue, to: encoder) 21 | } 22 | } 23 | 24 | /// A property that conforms to `Encodable` protocol and can be transformed from the specified `EncodableTransformer` 25 | @propertyWrapper public struct EncodableProperty: Encodable { 26 | public var wrappedValue: Transformer.Value 27 | private let transformer = Transformer() 28 | 29 | public init(wrappedValue: Transformer.Value) { 30 | self.wrappedValue = wrappedValue 31 | } 32 | 33 | public func encode(to encoder: Encoder) throws { 34 | try transformer.encode(value: wrappedValue, to: encoder) 35 | } 36 | } 37 | 38 | /// A property that conforms to `Decodable` protocol and can be transformed from the specified `DecodableTransformer` 39 | @propertyWrapper public struct DecodableProperty: Decodable { 40 | public var wrappedValue: Transformer.Value 41 | private let transformer = Transformer() 42 | 43 | public init(from decoder: Decoder) throws { 44 | wrappedValue = try transformer.value(from: decoder) 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /CodableProperty/Classes/CodableTransformer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CodableTransformer.swift 3 | // CodableProperty 4 | // 5 | // Created by Giorgos Charitakis on 10/07/2019. 6 | // 7 | 8 | import Foundation 9 | 10 | /// A type that transforms the outcome of, both the encoding and decoding process. 11 | public typealias CodableTransformer = EncodableTransformer & DecodableTransformer 12 | 13 | /// A type that transforms the outcome of the decoding process. 14 | public protocol DecodableTransformer { 15 | associatedtype Value 16 | 17 | init() 18 | 19 | /** 20 | Returns a new instance of `Value` type by decoding from the given decoder. 21 | 22 | This initializer throws an error if reading from the decoder fails, or 23 | if the data read is corrupted or otherwise invalid. 24 | 25 | - Parameter decoder: The decoder to read data from. 26 | 27 | - Throws: An error if reading from the decoder fails, or if the data read is corrupted or otherwise invalid. 28 | 29 | - Returns: A new instance of `Value` type. 30 | */ 31 | func value(from decoder: Decoder) throws -> Value 32 | } 33 | 34 | /// A type that transforms the outcome of the encoding process. 35 | public protocol EncodableTransformer { 36 | associatedtype Value 37 | 38 | init() 39 | 40 | /** 41 | Encodes the passed value into the given encoder. 42 | 43 | If the value fails to encode anything, `encoder` will encode an empty 44 | keyed container in its place. 45 | 46 | This function throws an error if any values are invalid for the given 47 | encoder's format. 48 | 49 | - Parameters: 50 | - value: The value to be encoded 51 | - encoder: The encoder to write data to. 52 | 53 | - Throws: an error if any values are invalid for the given encoder's format. 54 | */ 55 | func encode(value: Value, to encoder: Encoder) throws 56 | } 57 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2019 gcharita <chgiorgos13@gmail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | CodableProperty 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | import CodableProperty 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testTransformer() { 17 | let jsonString = """ 18 | { 19 | "currency": "PLN", 20 | "rates": { 21 | "USD": 3.76, 22 | "EUR": 4.24, 23 | "SEK": 0.41 24 | } 25 | } 26 | """ 27 | let object = try? JSONDecoder().decode(CurrencyConversion.self, from: Data(jsonString.utf8)) 28 | XCTAssertEqual(object?.currency, "PLN") 29 | XCTAssertEqual(object?.rates.first(where: { $0.currency == "USD" })?.rate, 3.76) 30 | XCTAssertEqual(object?.rates.first(where: { $0.currency == "EUR" })?.rate, 4.24) 31 | XCTAssertEqual(object?.rates.first(where: { $0.currency == "SEK" })?.rate, 0.41) 32 | } 33 | 34 | func testPerformanceExample() { 35 | // This is an example of a performance test case. 36 | self.measure() { 37 | // Put the code you want to measure the time of here. 38 | } 39 | } 40 | 41 | } 42 | 43 | struct CurrencyConversion: Codable { 44 | var currency: String 45 | @CodableProperty var rates: [ExchangeRate] 46 | } 47 | 48 | struct ExchangeRate { 49 | let currency: String 50 | let rate: Double 51 | } 52 | 53 | struct RatesTransformer: CodableTransformer { 54 | typealias Value = [ExchangeRate] 55 | 56 | func value(from decoder: Decoder) throws -> Value { 57 | let container = try decoder.singleValueContainer() 58 | let dictionary = try container.decode([String: Double].self) 59 | 60 | return dictionary.map { key, value in 61 | ExchangeRate(currency: key, rate: value) 62 | } 63 | } 64 | 65 | func encode(value: Value, to encoder: Encoder) throws { 66 | var container = encoder.singleValueContainer() 67 | let dictionary = value.reduce(into: [String: Double]()) { (result: inout [String: Double], exchangeRate: ExchangeRate) in 68 | result[exchangeRate.currency] = exchangeRate.rate 69 | } 70 | try container.encode(dictionary) 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Example/CodableProperty.xcodeproj/xcshareddata/xcschemes/CodableProperty-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 45 | 46 | 48 | 54 | 55 | 56 | 57 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 80 | 82 | 88 | 89 | 90 | 91 | 92 | 93 | 99 | 101 | 107 | 108 | 109 | 110 | 112 | 113 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CodableProperty 2 | 3 | [![CI Status](https://img.shields.io/travis/gcharita/CodableProperty.svg?style=flat)](https://travis-ci.org/gcharita/CodableProperty) 4 | [![Version](https://img.shields.io/cocoapods/v/CodableProperty.svg?style=flat)](https://cocoapods.org/pods/CodableProperty) 5 | [![License](https://img.shields.io/cocoapods/l/CodableProperty.svg?style=flat)](https://cocoapods.org/pods/CodableProperty) 6 | [![Platform](https://img.shields.io/cocoapods/p/CodableProperty.svg?style=flat)](https://cocoapods.org/pods/CodableProperty) 7 | [![Swift Package Manager compatible](https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager) 8 | 9 | CodableProperty is a framework written in Swift that works along with the build in `Codable` protocol. Uses the new `propertyWrapper` feature of Swift 5.1 to make type transformation easier. 10 | 11 | - [Example](#example) 12 | - [Requirements](#requirements) 13 | - [How to use](#how-to-use) 14 | - [Communication](#communication) 15 | - [Installation](#installation) 16 | - [Special thanks](#special-thanks) 17 | - [License](#license) 18 | 19 | ## Example 20 | 21 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 22 | 23 | ## Requirements 24 | 25 | - iOS 8.0+ / macOS 10.9+ / tvOS 9.0+ / watchOS 2.0+ 26 | - Xcode 11+ 27 | - Swift 5.1+ 28 | 29 | ## How to use 30 | 31 | To use `CodableProperty` just implement `CodableTransformer` protocol and use it inside your `Codable` model like this: 32 | 33 | ```swift 34 | @CodableProperty var someProperty: SomeType 35 | ``` 36 | 37 | For example if you have the following JSON: 38 | 39 | ```json 40 | { 41 | "currency": "PLN", 42 | "rates": { 43 | "USD": 3.76, 44 | "EUR": 4.24, 45 | "SEK": 0.41 46 | } 47 | } 48 | ``` 49 | 50 | And you want to map it in a model like this: 51 | 52 | ```swift 53 | struct CurrencyConversion { 54 | var currency: String 55 | var rates: [ExchangeRate] 56 | } 57 | 58 | struct ExchangeRate { 59 | let currency: String 60 | let rate: Double 61 | } 62 | ``` 63 | 64 | You can transform the JSON type to your model type by implementing `CodableTransformer` protocol: 65 | 66 | ```swift 67 | struct RatesTransformer: CodableTransformer { 68 | typealias Value = [ExchangeRate] 69 | 70 | func value(from decoder: Decoder) throws -> Value { 71 | let container = try decoder.singleValueContainer() 72 | let dictionary = try container.decode([String: Double].self) 73 | 74 | return dictionary.map { key, value in 75 | ExchangeRate(currency: key, rate: value) 76 | } 77 | } 78 | 79 | func encode(value: Value, to encoder: Encoder) throws { 80 | var container = encoder.singleValueContainer() 81 | let dictionary = value.reduce(into: [String: Double]()) { result, exchangeRate in 82 | result[exchangeRate.currency] = exchangeRate.rate 83 | } 84 | try container.encode(dictionary) 85 | } 86 | } 87 | ``` 88 | 89 | And use it in your `Codable` model like this: 90 | 91 | ```swift 92 | struct CurrencyConversion: Codable { 93 | var currency: String 94 | @CodableProperty var rates: [ExchangeRate] 95 | } 96 | 97 | struct ExchangeRate { 98 | let currency: String 99 | let rate: Double 100 | } 101 | ``` 102 | 103 | If you model implements `Decodable` protocol instead of `Codable` you can specialize the type transformation only in decoding process by implementing `DecodableTransformer` protocol: 104 | 105 | ```swift 106 | struct RatesTransformer: DecodableTransformer { 107 | typealias Value = [ExchangeRate] 108 | 109 | func value(from decoder: Decoder) throws -> Value { 110 | let container = try decoder.singleValueContainer() 111 | let dictionary = try container.decode([String: Double].self) 112 | 113 | return dictionary.map { key, value in 114 | ExchangeRate(currency: key, rate: value) 115 | } 116 | } 117 | } 118 | ``` 119 | 120 | And use it like this: 121 | 122 | ```swift 123 | struct CurrencyConversion: Decodable { 124 | var currency: String 125 | @DecodableProperty var rates: [ExchangeRate] 126 | } 127 | ``` 128 | 129 | The same applies also to `Encodable` models: 130 | 131 | ```swift 132 | struct RatesTransformer: EncodableTransformer { 133 | typealias Value = [ExchangeRate] 134 | 135 | func encode(value: Value, to encoder: Encoder) throws { 136 | var container = encoder.singleValueContainer() 137 | let dictionary = value.reduce(into: [String: Double]()) { result, exchangeRate in 138 | result[exchangeRate.currency] = exchangeRate.rate 139 | } 140 | try container.encode(dictionary) 141 | } 142 | } 143 | 144 | struct CurrencyConversion: Encodable { 145 | var currency: String 146 | @EncodableProperty var rates: [ExchangeRate] 147 | } 148 | ``` 149 | 150 | ## Communication 151 | 152 | - If you **found a bug**, open an issue. 153 | - If you **have a feature request**, open an issue. 154 | 155 | ## Installation 156 | 157 | ### CocoaPods 158 | 159 | CodableProperty is available through [CocoaPods](https://cocoapods.org). To install 160 | it, simply add the following line to your Podfile: 161 | 162 | ```ruby 163 | pod 'CodableProperty' 164 | ``` 165 | 166 | ### Swift Package Manager 167 | 168 | To add CodableProperty to a [Swift Package Manager](https://swift.org/package-manager/) based project, add the following: 169 | 170 | ```swift 171 | .package(url: "https://github.com/gcharita/CodableProperty.git", from: "1.0.0") 172 | ``` 173 | 174 | to the `dependencies` value of your `Package.swift`. 175 | 176 | ## Special thanks 177 | 178 | Special thanks to [John Sundell](https://github.com/JohnSundell). His example in [this](https://www.swiftbysundell.com/posts/customizing-codable-types-in-swift) article inspired me to write this project. 179 | 180 | ## License 181 | 182 | CodableProperty is available under the MIT license. See the [LICENSE](LICENSE) file for more info. 183 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | 23 | # Used as a return value for each invocation of `strip_invalid_archs` function. 24 | STRIP_BINARY_RETVAL=0 25 | 26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 29 | 30 | # Copies and strips a vendored framework 31 | install_framework() 32 | { 33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 34 | local source="${BUILT_PRODUCTS_DIR}/$1" 35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 37 | elif [ -r "$1" ]; then 38 | local source="$1" 39 | fi 40 | 41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 42 | 43 | if [ -L "${source}" ]; then 44 | echo "Symlinked..." 45 | source="$(readlink "${source}")" 46 | fi 47 | 48 | # Use filter instead of exclude so missing patterns don't throw errors. 49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 51 | 52 | local basename 53 | basename="$(basename -s .framework "$1")" 54 | binary="${destination}/${basename}.framework/${basename}" 55 | 56 | if ! [ -r "$binary" ]; then 57 | binary="${destination}/${basename}" 58 | elif [ -L "${binary}" ]; then 59 | echo "Destination binary is symlinked..." 60 | dirname="$(dirname "${binary}")" 61 | binary="${dirname}/$(readlink "${binary}")" 62 | fi 63 | 64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 66 | strip_invalid_archs "$binary" 67 | fi 68 | 69 | # Resign the code if required by the build settings to avoid unstable apps 70 | code_sign_if_enabled "${destination}/$(basename "$1")" 71 | 72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 74 | local swift_runtime_libs 75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 76 | for lib in $swift_runtime_libs; do 77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 79 | code_sign_if_enabled "${destination}/${lib}" 80 | done 81 | fi 82 | } 83 | 84 | # Copies and strips a vendored dSYM 85 | install_dsym() { 86 | local source="$1" 87 | if [ -r "$source" ]; then 88 | # Copy the dSYM into a the targets temp dir. 89 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 90 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 91 | 92 | local basename 93 | basename="$(basename -s .framework.dSYM "$source")" 94 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 95 | 96 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 97 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 98 | strip_invalid_archs "$binary" 99 | fi 100 | 101 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 102 | # Move the stripped file into its final destination. 103 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 104 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 105 | else 106 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 107 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 108 | fi 109 | fi 110 | } 111 | 112 | # Copies the bcsymbolmap files of a vendored framework 113 | install_bcsymbolmap() { 114 | local bcsymbolmap_path="$1" 115 | local destination="${BUILT_PRODUCTS_DIR}" 116 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 117 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 118 | } 119 | 120 | # Signs a framework with the provided identity 121 | code_sign_if_enabled() { 122 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 123 | # Use the current code_sign_identity 124 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 125 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 126 | 127 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 128 | code_sign_cmd="$code_sign_cmd &" 129 | fi 130 | echo "$code_sign_cmd" 131 | eval "$code_sign_cmd" 132 | fi 133 | } 134 | 135 | # Strip invalid architectures 136 | strip_invalid_archs() { 137 | binary="$1" 138 | # Get architectures for current target binary 139 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 140 | # Intersect them with the architectures we are building for 141 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 142 | # If there are no archs supported by this binary then warn the user 143 | if [[ -z "$intersected_archs" ]]; then 144 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 145 | STRIP_BINARY_RETVAL=0 146 | return 147 | fi 148 | stripped="" 149 | for arch in $binary_archs; do 150 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 151 | # Strip non-valid architectures in-place 152 | lipo -remove "$arch" -output "$binary" "$binary" 153 | stripped="$stripped $arch" 154 | fi 155 | done 156 | if [[ "$stripped" ]]; then 157 | echo "Stripped $binary of architectures:$stripped" 158 | fi 159 | STRIP_BINARY_RETVAL=1 160 | } 161 | 162 | 163 | if [[ "$CONFIGURATION" == "Debug" ]]; then 164 | install_framework "${BUILT_PRODUCTS_DIR}/CodableProperty/CodableProperty.framework" 165 | fi 166 | if [[ "$CONFIGURATION" == "Release" ]]; then 167 | install_framework "${BUILT_PRODUCTS_DIR}/CodableProperty/CodableProperty.framework" 168 | fi 169 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 170 | wait 171 | fi 172 | -------------------------------------------------------------------------------- /Example/CodableProperty.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 343EFF05A480E9B0932FA2BF /* Pods_CodableProperty_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 042DAB7EB5ECBA0909143439 /* Pods_CodableProperty_Tests.framework */; }; 11 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 12 | /* End PBXBuildFile section */ 13 | 14 | /* Begin PBXFileReference section */ 15 | 042DAB7EB5ECBA0909143439 /* Pods_CodableProperty_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CodableProperty_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 16 | 4F1E2AB0048BC81C6A679C95 /* CodableProperty.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = CodableProperty.podspec; path = ../CodableProperty.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 17 | 607FACE51AFB9204008FA782 /* CodableProperty_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CodableProperty_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 18 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 19 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 20 | 65C93F01FBBD5FCFEF9F72B3 /* Pods-CodableProperty_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodableProperty_Tests.release.xcconfig"; path = "Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.release.xcconfig"; sourceTree = ""; }; 21 | 746BE82C569AB9C75E611FD9 /* Pods-CodableProperty_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodableProperty_Tests.debug.xcconfig"; path = "Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.debug.xcconfig"; sourceTree = ""; }; 22 | ACACAD5F2026DD4F8FBEB32C /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 23 | B9313FE6E6769703D5C27064 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 24 | /* End PBXFileReference section */ 25 | 26 | /* Begin PBXFrameworksBuildPhase section */ 27 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 28 | isa = PBXFrameworksBuildPhase; 29 | buildActionMask = 2147483647; 30 | files = ( 31 | 343EFF05A480E9B0932FA2BF /* Pods_CodableProperty_Tests.framework in Frameworks */, 32 | ); 33 | runOnlyForDeploymentPostprocessing = 0; 34 | }; 35 | /* End PBXFrameworksBuildPhase section */ 36 | 37 | /* Begin PBXGroup section */ 38 | 607FACC71AFB9204008FA782 = { 39 | isa = PBXGroup; 40 | children = ( 41 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 42 | 607FACE81AFB9204008FA782 /* Tests */, 43 | 607FACD11AFB9204008FA782 /* Products */, 44 | 79C98967344C9B72070F57B8 /* Pods */, 45 | FE3EF8D0056E7F6AFF4ACBE4 /* Frameworks */, 46 | ); 47 | sourceTree = ""; 48 | }; 49 | 607FACD11AFB9204008FA782 /* Products */ = { 50 | isa = PBXGroup; 51 | children = ( 52 | 607FACE51AFB9204008FA782 /* CodableProperty_Tests.xctest */, 53 | ); 54 | name = Products; 55 | sourceTree = ""; 56 | }; 57 | 607FACE81AFB9204008FA782 /* Tests */ = { 58 | isa = PBXGroup; 59 | children = ( 60 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 61 | 607FACE91AFB9204008FA782 /* Supporting Files */, 62 | ); 63 | path = Tests; 64 | sourceTree = ""; 65 | }; 66 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | 607FACEA1AFB9204008FA782 /* Info.plist */, 70 | ); 71 | name = "Supporting Files"; 72 | sourceTree = ""; 73 | }; 74 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 4F1E2AB0048BC81C6A679C95 /* CodableProperty.podspec */, 78 | B9313FE6E6769703D5C27064 /* README.md */, 79 | ACACAD5F2026DD4F8FBEB32C /* LICENSE */, 80 | ); 81 | name = "Podspec Metadata"; 82 | sourceTree = ""; 83 | }; 84 | 79C98967344C9B72070F57B8 /* Pods */ = { 85 | isa = PBXGroup; 86 | children = ( 87 | 746BE82C569AB9C75E611FD9 /* Pods-CodableProperty_Tests.debug.xcconfig */, 88 | 65C93F01FBBD5FCFEF9F72B3 /* Pods-CodableProperty_Tests.release.xcconfig */, 89 | ); 90 | path = Pods; 91 | sourceTree = ""; 92 | }; 93 | FE3EF8D0056E7F6AFF4ACBE4 /* Frameworks */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 042DAB7EB5ECBA0909143439 /* Pods_CodableProperty_Tests.framework */, 97 | ); 98 | name = Frameworks; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | 607FACE41AFB9204008FA782 /* CodableProperty_Tests */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "CodableProperty_Tests" */; 107 | buildPhases = ( 108 | F548D915E33331A922C5F774 /* [CP] Check Pods Manifest.lock */, 109 | 607FACE11AFB9204008FA782 /* Sources */, 110 | 607FACE21AFB9204008FA782 /* Frameworks */, 111 | 607FACE31AFB9204008FA782 /* Resources */, 112 | AB14FD9BA3E91584BB79405E /* [CP] Embed Pods Frameworks */, 113 | ); 114 | buildRules = ( 115 | ); 116 | dependencies = ( 117 | ); 118 | name = CodableProperty_Tests; 119 | productName = Tests; 120 | productReference = 607FACE51AFB9204008FA782 /* CodableProperty_Tests.xctest */; 121 | productType = "com.apple.product-type.bundle.unit-test"; 122 | }; 123 | /* End PBXNativeTarget section */ 124 | 125 | /* Begin PBXProject section */ 126 | 607FACC81AFB9204008FA782 /* Project object */ = { 127 | isa = PBXProject; 128 | attributes = { 129 | LastSwiftUpdateCheck = 0830; 130 | LastUpgradeCheck = 0830; 131 | ORGANIZATIONNAME = CocoaPods; 132 | TargetAttributes = { 133 | 607FACE41AFB9204008FA782 = { 134 | CreatedOnToolsVersion = 6.3.1; 135 | LastSwiftMigration = 0900; 136 | }; 137 | }; 138 | }; 139 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "CodableProperty" */; 140 | compatibilityVersion = "Xcode 3.2"; 141 | developmentRegion = English; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | English, 145 | en, 146 | Base, 147 | ); 148 | mainGroup = 607FACC71AFB9204008FA782; 149 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 150 | projectDirPath = ""; 151 | projectRoot = ""; 152 | targets = ( 153 | 607FACE41AFB9204008FA782 /* CodableProperty_Tests */, 154 | ); 155 | }; 156 | /* End PBXProject section */ 157 | 158 | /* Begin PBXResourcesBuildPhase section */ 159 | 607FACE31AFB9204008FA782 /* Resources */ = { 160 | isa = PBXResourcesBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | ); 164 | runOnlyForDeploymentPostprocessing = 0; 165 | }; 166 | /* End PBXResourcesBuildPhase section */ 167 | 168 | /* Begin PBXShellScriptBuildPhase section */ 169 | AB14FD9BA3E91584BB79405E /* [CP] Embed Pods Frameworks */ = { 170 | isa = PBXShellScriptBuildPhase; 171 | buildActionMask = 2147483647; 172 | files = ( 173 | ); 174 | inputPaths = ( 175 | "${PODS_ROOT}/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-frameworks.sh", 176 | "${BUILT_PRODUCTS_DIR}/CodableProperty/CodableProperty.framework", 177 | ); 178 | name = "[CP] Embed Pods Frameworks"; 179 | outputPaths = ( 180 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CodableProperty.framework", 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | shellPath = /bin/sh; 184 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-frameworks.sh\"\n"; 185 | showEnvVarsInLog = 0; 186 | }; 187 | F548D915E33331A922C5F774 /* [CP] Check Pods Manifest.lock */ = { 188 | isa = PBXShellScriptBuildPhase; 189 | buildActionMask = 2147483647; 190 | files = ( 191 | ); 192 | inputFileListPaths = ( 193 | ); 194 | inputPaths = ( 195 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 196 | "${PODS_ROOT}/Manifest.lock", 197 | ); 198 | name = "[CP] Check Pods Manifest.lock"; 199 | outputFileListPaths = ( 200 | ); 201 | outputPaths = ( 202 | "$(DERIVED_FILE_DIR)/Pods-CodableProperty_Tests-checkManifestLockResult.txt", 203 | ); 204 | runOnlyForDeploymentPostprocessing = 0; 205 | shellPath = /bin/sh; 206 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 207 | showEnvVarsInLog = 0; 208 | }; 209 | /* End PBXShellScriptBuildPhase section */ 210 | 211 | /* Begin PBXSourcesBuildPhase section */ 212 | 607FACE11AFB9204008FA782 /* Sources */ = { 213 | isa = PBXSourcesBuildPhase; 214 | buildActionMask = 2147483647; 215 | files = ( 216 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 217 | ); 218 | runOnlyForDeploymentPostprocessing = 0; 219 | }; 220 | /* End PBXSourcesBuildPhase section */ 221 | 222 | /* Begin XCBuildConfiguration section */ 223 | 607FACED1AFB9204008FA782 /* Debug */ = { 224 | isa = XCBuildConfiguration; 225 | buildSettings = { 226 | ALWAYS_SEARCH_USER_PATHS = NO; 227 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 228 | CLANG_CXX_LIBRARY = "libc++"; 229 | CLANG_ENABLE_MODULES = YES; 230 | CLANG_ENABLE_OBJC_ARC = YES; 231 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 232 | CLANG_WARN_BOOL_CONVERSION = YES; 233 | CLANG_WARN_COMMA = YES; 234 | CLANG_WARN_CONSTANT_CONVERSION = YES; 235 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 236 | CLANG_WARN_EMPTY_BODY = YES; 237 | CLANG_WARN_ENUM_CONVERSION = YES; 238 | CLANG_WARN_INFINITE_RECURSION = YES; 239 | CLANG_WARN_INT_CONVERSION = YES; 240 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 241 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 242 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 243 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 244 | CLANG_WARN_STRICT_PROTOTYPES = YES; 245 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 246 | CLANG_WARN_UNREACHABLE_CODE = YES; 247 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 248 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 249 | COPY_PHASE_STRIP = NO; 250 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 251 | ENABLE_STRICT_OBJC_MSGSEND = YES; 252 | ENABLE_TESTABILITY = YES; 253 | GCC_C_LANGUAGE_STANDARD = gnu99; 254 | GCC_DYNAMIC_NO_PIC = NO; 255 | GCC_NO_COMMON_BLOCKS = YES; 256 | GCC_OPTIMIZATION_LEVEL = 0; 257 | GCC_PREPROCESSOR_DEFINITIONS = ( 258 | "DEBUG=1", 259 | "$(inherited)", 260 | ); 261 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 262 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 263 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 264 | GCC_WARN_UNDECLARED_SELECTOR = YES; 265 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 266 | GCC_WARN_UNUSED_FUNCTION = YES; 267 | GCC_WARN_UNUSED_VARIABLE = YES; 268 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 269 | MTL_ENABLE_DEBUG_INFO = YES; 270 | ONLY_ACTIVE_ARCH = YES; 271 | SDKROOT = iphoneos; 272 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 273 | }; 274 | name = Debug; 275 | }; 276 | 607FACEE1AFB9204008FA782 /* Release */ = { 277 | isa = XCBuildConfiguration; 278 | buildSettings = { 279 | ALWAYS_SEARCH_USER_PATHS = NO; 280 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 281 | CLANG_CXX_LIBRARY = "libc++"; 282 | CLANG_ENABLE_MODULES = YES; 283 | CLANG_ENABLE_OBJC_ARC = YES; 284 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 285 | CLANG_WARN_BOOL_CONVERSION = YES; 286 | CLANG_WARN_COMMA = YES; 287 | CLANG_WARN_CONSTANT_CONVERSION = YES; 288 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 289 | CLANG_WARN_EMPTY_BODY = YES; 290 | CLANG_WARN_ENUM_CONVERSION = YES; 291 | CLANG_WARN_INFINITE_RECURSION = YES; 292 | CLANG_WARN_INT_CONVERSION = YES; 293 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 294 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 295 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 296 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 297 | CLANG_WARN_STRICT_PROTOTYPES = YES; 298 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 299 | CLANG_WARN_UNREACHABLE_CODE = YES; 300 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 301 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 302 | COPY_PHASE_STRIP = NO; 303 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 304 | ENABLE_NS_ASSERTIONS = NO; 305 | ENABLE_STRICT_OBJC_MSGSEND = YES; 306 | GCC_C_LANGUAGE_STANDARD = gnu99; 307 | GCC_NO_COMMON_BLOCKS = YES; 308 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 309 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 310 | GCC_WARN_UNDECLARED_SELECTOR = YES; 311 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 312 | GCC_WARN_UNUSED_FUNCTION = YES; 313 | GCC_WARN_UNUSED_VARIABLE = YES; 314 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 315 | MTL_ENABLE_DEBUG_INFO = NO; 316 | SDKROOT = iphoneos; 317 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 318 | VALIDATE_PRODUCT = YES; 319 | }; 320 | name = Release; 321 | }; 322 | 607FACF31AFB9204008FA782 /* Debug */ = { 323 | isa = XCBuildConfiguration; 324 | baseConfigurationReference = 746BE82C569AB9C75E611FD9 /* Pods-CodableProperty_Tests.debug.xcconfig */; 325 | buildSettings = { 326 | FRAMEWORK_SEARCH_PATHS = ( 327 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 328 | "$(inherited)", 329 | ); 330 | GCC_PREPROCESSOR_DEFINITIONS = ( 331 | "DEBUG=1", 332 | "$(inherited)", 333 | ); 334 | INFOPLIST_FILE = Tests/Info.plist; 335 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 336 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 337 | PRODUCT_NAME = "$(TARGET_NAME)"; 338 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 339 | SWIFT_VERSION = 4.0; 340 | }; 341 | name = Debug; 342 | }; 343 | 607FACF41AFB9204008FA782 /* Release */ = { 344 | isa = XCBuildConfiguration; 345 | baseConfigurationReference = 65C93F01FBBD5FCFEF9F72B3 /* Pods-CodableProperty_Tests.release.xcconfig */; 346 | buildSettings = { 347 | FRAMEWORK_SEARCH_PATHS = ( 348 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 349 | "$(inherited)", 350 | ); 351 | INFOPLIST_FILE = Tests/Info.plist; 352 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 353 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 354 | PRODUCT_NAME = "$(TARGET_NAME)"; 355 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 356 | SWIFT_VERSION = 4.0; 357 | }; 358 | name = Release; 359 | }; 360 | /* End XCBuildConfiguration section */ 361 | 362 | /* Begin XCConfigurationList section */ 363 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "CodableProperty" */ = { 364 | isa = XCConfigurationList; 365 | buildConfigurations = ( 366 | 607FACED1AFB9204008FA782 /* Debug */, 367 | 607FACEE1AFB9204008FA782 /* Release */, 368 | ); 369 | defaultConfigurationIsVisible = 0; 370 | defaultConfigurationName = Release; 371 | }; 372 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "CodableProperty_Tests" */ = { 373 | isa = XCConfigurationList; 374 | buildConfigurations = ( 375 | 607FACF31AFB9204008FA782 /* Debug */, 376 | 607FACF41AFB9204008FA782 /* Release */, 377 | ); 378 | defaultConfigurationIsVisible = 0; 379 | defaultConfigurationName = Release; 380 | }; 381 | /* End XCConfigurationList section */ 382 | }; 383 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 384 | } 385 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3043AFF88232E6E3AE242C45D7044D18 /* Pods-CodableProperty_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 426543C3DBD0CA0A6D37DA78542F4EC7 /* Pods-CodableProperty_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 59D587B54EAAB3F9DC2E1179EBA9D244 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 12 | 6A60935751799DB672A9CAFF565A81D8 /* CodableProperty-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B37EC03B38EB6F5AF226291E0673D1FB /* CodableProperty-dummy.m */; }; 13 | 7260AEF0E1CBC6B10C5BD796F257C3A1 /* CodableTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE886DE106B693EAAE46056985F987C5 /* CodableTransformer.swift */; }; 14 | 7C5DC0C992D0FE6C2C8DCDA0B065F09E /* Pods-CodableProperty_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C7CBC3112DE21D495D3A03BD1F7127 /* Pods-CodableProperty_Tests-dummy.m */; }; 15 | 80727AB71565DD88F05706262BE420E3 /* CodableProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5537E9A30551A0815B01D002CB5D523D /* CodableProperty.swift */; }; 16 | 83FE0E155379A0F4A922476991D09773 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 17 | C656DC23AE56F21B869D70AF45ACA956 /* CodableProperty-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 233473F5F18A239BC85713D6CBC114E3 /* CodableProperty-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | B66866F62ADB592B285B02A640846C00 /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 7A8C1AA976901F6254DE0BB8D3504A9F; 26 | remoteInfo = CodableProperty; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 034F4A0ED8FD4E71BD934C44FDF7627F /* Pods-CodableProperty_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CodableProperty_Tests-acknowledgements.plist"; sourceTree = ""; }; 32 | 071AA4D3475F1597BBF407AC123F598D /* Pods-CodableProperty_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CodableProperty_Tests-Info.plist"; sourceTree = ""; }; 33 | 1E4D5F9AB75982F7E7BFACA84E44FA9D /* Pods-CodableProperty_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CodableProperty_Tests.release.xcconfig"; sourceTree = ""; }; 34 | 233473F5F18A239BC85713D6CBC114E3 /* CodableProperty-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodableProperty-umbrella.h"; sourceTree = ""; }; 35 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 36 | 3918CD084B41B4B8473F296FC8DED5E4 /* CodableProperty.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CodableProperty.modulemap; sourceTree = ""; }; 37 | 426543C3DBD0CA0A6D37DA78542F4EC7 /* Pods-CodableProperty_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CodableProperty_Tests-umbrella.h"; sourceTree = ""; }; 38 | 4ABFE21B2B9616AE4C1671078AB4B581 /* CodableProperty-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CodableProperty-Info.plist"; sourceTree = ""; }; 39 | 4B305DF24F17C789A20B6195F8E67621 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 40 | 5537E9A30551A0815B01D002CB5D523D /* CodableProperty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CodableProperty.swift; path = CodableProperty/Classes/CodableProperty.swift; sourceTree = ""; }; 41 | 7052C13548BC4256ACF466C84B2C5D57 /* Pods_CodableProperty_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_CodableProperty_Tests.framework; path = "Pods-CodableProperty_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 735E7CF1C7EEBFF4F9A87ED0623F584D /* Pods-CodableProperty_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CodableProperty_Tests-frameworks.sh"; sourceTree = ""; }; 43 | 785C17572C850CBD23DFC35EB230346F /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 44 | 8028D4FDF42F62963E33C8DDC9F9B4EE /* CodableProperty.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CodableProperty.xcconfig; sourceTree = ""; }; 45 | 92C7CBC3112DE21D495D3A03BD1F7127 /* Pods-CodableProperty_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CodableProperty_Tests-dummy.m"; sourceTree = ""; }; 46 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 47 | A642F9B8FAFD308F288F1B53F9F557F8 /* CodableProperty.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = CodableProperty.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 48 | AE4A2035089EC25A84B118C8CE6A3BD7 /* Pods-CodableProperty_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CodableProperty_Tests.debug.xcconfig"; sourceTree = ""; }; 49 | B37EC03B38EB6F5AF226291E0673D1FB /* CodableProperty-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CodableProperty-dummy.m"; sourceTree = ""; }; 50 | BCD36C5E0FCAF96443BA69A978C07585 /* CodableProperty.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CodableProperty.framework; path = CodableProperty.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | BE886DE106B693EAAE46056985F987C5 /* CodableTransformer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CodableTransformer.swift; path = CodableProperty/Classes/CodableTransformer.swift; sourceTree = ""; }; 52 | C6AD6B548978F4E81B15B74AC2666AEA /* Pods-CodableProperty_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CodableProperty_Tests-acknowledgements.markdown"; sourceTree = ""; }; 53 | EB59B7FC9392F47FCBEEA0F91279065F /* Pods-CodableProperty_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CodableProperty_Tests.modulemap"; sourceTree = ""; }; 54 | F0E07447BFF3698C1E971C3515B649C7 /* CodableProperty-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodableProperty-prefix.pch"; sourceTree = ""; }; 55 | /* End PBXFileReference section */ 56 | 57 | /* Begin PBXFrameworksBuildPhase section */ 58 | 846E960B8039031F7916A4CB74AA604A /* Frameworks */ = { 59 | isa = PBXFrameworksBuildPhase; 60 | buildActionMask = 2147483647; 61 | files = ( 62 | 83FE0E155379A0F4A922476991D09773 /* Foundation.framework in Frameworks */, 63 | ); 64 | runOnlyForDeploymentPostprocessing = 0; 65 | }; 66 | F416EDB0718CF74AC0A89AC9F3308D01 /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | 59D587B54EAAB3F9DC2E1179EBA9D244 /* Foundation.framework in Frameworks */, 71 | ); 72 | runOnlyForDeploymentPostprocessing = 0; 73 | }; 74 | /* End PBXFrameworksBuildPhase section */ 75 | 76 | /* Begin PBXGroup section */ 77 | 1FB30460C3561480776E7DB17188AADD /* CodableProperty */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 5537E9A30551A0815B01D002CB5D523D /* CodableProperty.swift */, 81 | BE886DE106B693EAAE46056985F987C5 /* CodableTransformer.swift */, 82 | 51B354411EB6DE7291BDF03039B33C43 /* Pod */, 83 | 40D3E0E7117D46F73DF2901947DD1220 /* Support Files */, 84 | ); 85 | name = CodableProperty; 86 | path = ../..; 87 | sourceTree = ""; 88 | }; 89 | 2BB0A9F1F144E8577F91CE2CAA54F929 /* Targets Support Files */ = { 90 | isa = PBXGroup; 91 | children = ( 92 | ABEDF91C40E5E5CE331FDFEED9BA50F2 /* Pods-CodableProperty_Tests */, 93 | ); 94 | name = "Targets Support Files"; 95 | sourceTree = ""; 96 | }; 97 | 40D3E0E7117D46F73DF2901947DD1220 /* Support Files */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 3918CD084B41B4B8473F296FC8DED5E4 /* CodableProperty.modulemap */, 101 | 8028D4FDF42F62963E33C8DDC9F9B4EE /* CodableProperty.xcconfig */, 102 | B37EC03B38EB6F5AF226291E0673D1FB /* CodableProperty-dummy.m */, 103 | 4ABFE21B2B9616AE4C1671078AB4B581 /* CodableProperty-Info.plist */, 104 | F0E07447BFF3698C1E971C3515B649C7 /* CodableProperty-prefix.pch */, 105 | 233473F5F18A239BC85713D6CBC114E3 /* CodableProperty-umbrella.h */, 106 | ); 107 | name = "Support Files"; 108 | path = "Example/Pods/Target Support Files/CodableProperty"; 109 | sourceTree = ""; 110 | }; 111 | 50CF419BDF4F2116344A75B2A24E4308 /* Development Pods */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 1FB30460C3561480776E7DB17188AADD /* CodableProperty */, 115 | ); 116 | name = "Development Pods"; 117 | sourceTree = ""; 118 | }; 119 | 51B354411EB6DE7291BDF03039B33C43 /* Pod */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | A642F9B8FAFD308F288F1B53F9F557F8 /* CodableProperty.podspec */, 123 | 4B305DF24F17C789A20B6195F8E67621 /* LICENSE */, 124 | 785C17572C850CBD23DFC35EB230346F /* README.md */, 125 | ); 126 | name = Pod; 127 | sourceTree = ""; 128 | }; 129 | A77485579E7C663EF85960681B5E02B0 /* Products */ = { 130 | isa = PBXGroup; 131 | children = ( 132 | BCD36C5E0FCAF96443BA69A978C07585 /* CodableProperty.framework */, 133 | 7052C13548BC4256ACF466C84B2C5D57 /* Pods_CodableProperty_Tests.framework */, 134 | ); 135 | name = Products; 136 | sourceTree = ""; 137 | }; 138 | ABEDF91C40E5E5CE331FDFEED9BA50F2 /* Pods-CodableProperty_Tests */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | EB59B7FC9392F47FCBEEA0F91279065F /* Pods-CodableProperty_Tests.modulemap */, 142 | C6AD6B548978F4E81B15B74AC2666AEA /* Pods-CodableProperty_Tests-acknowledgements.markdown */, 143 | 034F4A0ED8FD4E71BD934C44FDF7627F /* Pods-CodableProperty_Tests-acknowledgements.plist */, 144 | 92C7CBC3112DE21D495D3A03BD1F7127 /* Pods-CodableProperty_Tests-dummy.m */, 145 | 735E7CF1C7EEBFF4F9A87ED0623F584D /* Pods-CodableProperty_Tests-frameworks.sh */, 146 | 071AA4D3475F1597BBF407AC123F598D /* Pods-CodableProperty_Tests-Info.plist */, 147 | 426543C3DBD0CA0A6D37DA78542F4EC7 /* Pods-CodableProperty_Tests-umbrella.h */, 148 | AE4A2035089EC25A84B118C8CE6A3BD7 /* Pods-CodableProperty_Tests.debug.xcconfig */, 149 | 1E4D5F9AB75982F7E7BFACA84E44FA9D /* Pods-CodableProperty_Tests.release.xcconfig */, 150 | ); 151 | name = "Pods-CodableProperty_Tests"; 152 | path = "Target Support Files/Pods-CodableProperty_Tests"; 153 | sourceTree = ""; 154 | }; 155 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = { 156 | isa = PBXGroup; 157 | children = ( 158 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */, 159 | ); 160 | name = iOS; 161 | sourceTree = ""; 162 | }; 163 | CF1408CF629C7361332E53B88F7BD30C = { 164 | isa = PBXGroup; 165 | children = ( 166 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 167 | 50CF419BDF4F2116344A75B2A24E4308 /* Development Pods */, 168 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, 169 | A77485579E7C663EF85960681B5E02B0 /* Products */, 170 | 2BB0A9F1F144E8577F91CE2CAA54F929 /* Targets Support Files */, 171 | ); 172 | sourceTree = ""; 173 | }; 174 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | C0834CEBB1379A84116EF29F93051C60 /* iOS */, 178 | ); 179 | name = Frameworks; 180 | sourceTree = ""; 181 | }; 182 | /* End PBXGroup section */ 183 | 184 | /* Begin PBXHeadersBuildPhase section */ 185 | 943900C43F5C1CFC313FF3F5A67B88EE /* Headers */ = { 186 | isa = PBXHeadersBuildPhase; 187 | buildActionMask = 2147483647; 188 | files = ( 189 | C656DC23AE56F21B869D70AF45ACA956 /* CodableProperty-umbrella.h in Headers */, 190 | ); 191 | runOnlyForDeploymentPostprocessing = 0; 192 | }; 193 | C2C3EE2B31D614C56785CD847DB32CEB /* Headers */ = { 194 | isa = PBXHeadersBuildPhase; 195 | buildActionMask = 2147483647; 196 | files = ( 197 | 3043AFF88232E6E3AE242C45D7044D18 /* Pods-CodableProperty_Tests-umbrella.h in Headers */, 198 | ); 199 | runOnlyForDeploymentPostprocessing = 0; 200 | }; 201 | /* End PBXHeadersBuildPhase section */ 202 | 203 | /* Begin PBXNativeTarget section */ 204 | 7A8C1AA976901F6254DE0BB8D3504A9F /* CodableProperty */ = { 205 | isa = PBXNativeTarget; 206 | buildConfigurationList = 9BE366DD7457C195C09BB64F553B43BA /* Build configuration list for PBXNativeTarget "CodableProperty" */; 207 | buildPhases = ( 208 | 943900C43F5C1CFC313FF3F5A67B88EE /* Headers */, 209 | 2E778DEB42C68BCF5CEA27CD22CD3FC2 /* Sources */, 210 | 846E960B8039031F7916A4CB74AA604A /* Frameworks */, 211 | D9B2E5EE53597A58FB7D1A291BCF45B3 /* Resources */, 212 | ); 213 | buildRules = ( 214 | ); 215 | dependencies = ( 216 | ); 217 | name = CodableProperty; 218 | productName = CodableProperty; 219 | productReference = BCD36C5E0FCAF96443BA69A978C07585 /* CodableProperty.framework */; 220 | productType = "com.apple.product-type.framework"; 221 | }; 222 | 7B27181817A8FFEDEE28092C4F990041 /* Pods-CodableProperty_Tests */ = { 223 | isa = PBXNativeTarget; 224 | buildConfigurationList = E573D0C8C547E3D57273EA26B5116E6E /* Build configuration list for PBXNativeTarget "Pods-CodableProperty_Tests" */; 225 | buildPhases = ( 226 | C2C3EE2B31D614C56785CD847DB32CEB /* Headers */, 227 | F3A91A0085E5F1E49F62976FC2EDEBB4 /* Sources */, 228 | F416EDB0718CF74AC0A89AC9F3308D01 /* Frameworks */, 229 | 67C8042FEC94BB071937E74A5C254544 /* Resources */, 230 | ); 231 | buildRules = ( 232 | ); 233 | dependencies = ( 234 | 9E024D6706E8BFB8C66E0783ADAA2676 /* PBXTargetDependency */, 235 | ); 236 | name = "Pods-CodableProperty_Tests"; 237 | productName = "Pods-CodableProperty_Tests"; 238 | productReference = 7052C13548BC4256ACF466C84B2C5D57 /* Pods_CodableProperty_Tests.framework */; 239 | productType = "com.apple.product-type.framework"; 240 | }; 241 | /* End PBXNativeTarget section */ 242 | 243 | /* Begin PBXProject section */ 244 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 245 | isa = PBXProject; 246 | attributes = { 247 | LastSwiftUpdateCheck = 1100; 248 | LastUpgradeCheck = 1100; 249 | }; 250 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 251 | compatibilityVersion = "Xcode 3.2"; 252 | developmentRegion = en; 253 | hasScannedForEncodings = 0; 254 | knownRegions = ( 255 | en, 256 | ); 257 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 258 | productRefGroup = A77485579E7C663EF85960681B5E02B0 /* Products */; 259 | projectDirPath = ""; 260 | projectRoot = ""; 261 | targets = ( 262 | 7A8C1AA976901F6254DE0BB8D3504A9F /* CodableProperty */, 263 | 7B27181817A8FFEDEE28092C4F990041 /* Pods-CodableProperty_Tests */, 264 | ); 265 | }; 266 | /* End PBXProject section */ 267 | 268 | /* Begin PBXResourcesBuildPhase section */ 269 | 67C8042FEC94BB071937E74A5C254544 /* Resources */ = { 270 | isa = PBXResourcesBuildPhase; 271 | buildActionMask = 2147483647; 272 | files = ( 273 | ); 274 | runOnlyForDeploymentPostprocessing = 0; 275 | }; 276 | D9B2E5EE53597A58FB7D1A291BCF45B3 /* Resources */ = { 277 | isa = PBXResourcesBuildPhase; 278 | buildActionMask = 2147483647; 279 | files = ( 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | /* End PBXResourcesBuildPhase section */ 284 | 285 | /* Begin PBXSourcesBuildPhase section */ 286 | 2E778DEB42C68BCF5CEA27CD22CD3FC2 /* Sources */ = { 287 | isa = PBXSourcesBuildPhase; 288 | buildActionMask = 2147483647; 289 | files = ( 290 | 6A60935751799DB672A9CAFF565A81D8 /* CodableProperty-dummy.m in Sources */, 291 | 80727AB71565DD88F05706262BE420E3 /* CodableProperty.swift in Sources */, 292 | 7260AEF0E1CBC6B10C5BD796F257C3A1 /* CodableTransformer.swift in Sources */, 293 | ); 294 | runOnlyForDeploymentPostprocessing = 0; 295 | }; 296 | F3A91A0085E5F1E49F62976FC2EDEBB4 /* Sources */ = { 297 | isa = PBXSourcesBuildPhase; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | 7C5DC0C992D0FE6C2C8DCDA0B065F09E /* Pods-CodableProperty_Tests-dummy.m in Sources */, 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | }; 304 | /* End PBXSourcesBuildPhase section */ 305 | 306 | /* Begin PBXTargetDependency section */ 307 | 9E024D6706E8BFB8C66E0783ADAA2676 /* PBXTargetDependency */ = { 308 | isa = PBXTargetDependency; 309 | name = CodableProperty; 310 | target = 7A8C1AA976901F6254DE0BB8D3504A9F /* CodableProperty */; 311 | targetProxy = B66866F62ADB592B285B02A640846C00 /* PBXContainerItemProxy */; 312 | }; 313 | /* End PBXTargetDependency section */ 314 | 315 | /* Begin XCBuildConfiguration section */ 316 | 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */ = { 317 | isa = XCBuildConfiguration; 318 | buildSettings = { 319 | ALWAYS_SEARCH_USER_PATHS = NO; 320 | CLANG_ANALYZER_NONNULL = YES; 321 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 322 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 323 | CLANG_CXX_LIBRARY = "libc++"; 324 | CLANG_ENABLE_MODULES = YES; 325 | CLANG_ENABLE_OBJC_ARC = YES; 326 | CLANG_ENABLE_OBJC_WEAK = YES; 327 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 328 | CLANG_WARN_BOOL_CONVERSION = YES; 329 | CLANG_WARN_COMMA = YES; 330 | CLANG_WARN_CONSTANT_CONVERSION = YES; 331 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 332 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 333 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 334 | CLANG_WARN_EMPTY_BODY = YES; 335 | CLANG_WARN_ENUM_CONVERSION = YES; 336 | CLANG_WARN_INFINITE_RECURSION = YES; 337 | CLANG_WARN_INT_CONVERSION = YES; 338 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 339 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 340 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 341 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 342 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 343 | CLANG_WARN_STRICT_PROTOTYPES = YES; 344 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 345 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 346 | CLANG_WARN_UNREACHABLE_CODE = YES; 347 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 348 | COPY_PHASE_STRIP = NO; 349 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 350 | ENABLE_NS_ASSERTIONS = NO; 351 | ENABLE_STRICT_OBJC_MSGSEND = YES; 352 | GCC_C_LANGUAGE_STANDARD = gnu11; 353 | GCC_NO_COMMON_BLOCKS = YES; 354 | GCC_PREPROCESSOR_DEFINITIONS = ( 355 | "POD_CONFIGURATION_RELEASE=1", 356 | "$(inherited)", 357 | ); 358 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 359 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 360 | GCC_WARN_UNDECLARED_SELECTOR = YES; 361 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 362 | GCC_WARN_UNUSED_FUNCTION = YES; 363 | GCC_WARN_UNUSED_VARIABLE = YES; 364 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 365 | MTL_ENABLE_DEBUG_INFO = NO; 366 | MTL_FAST_MATH = YES; 367 | PRODUCT_NAME = "$(TARGET_NAME)"; 368 | STRIP_INSTALLED_PRODUCT = NO; 369 | SWIFT_COMPILATION_MODE = wholemodule; 370 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 371 | SWIFT_VERSION = 5.0; 372 | SYMROOT = "${SRCROOT}/../build"; 373 | }; 374 | name = Release; 375 | }; 376 | 63EE308C6CF1566E500BB8387DA808B1 /* Release */ = { 377 | isa = XCBuildConfiguration; 378 | baseConfigurationReference = 1E4D5F9AB75982F7E7BFACA84E44FA9D /* Pods-CodableProperty_Tests.release.xcconfig */; 379 | buildSettings = { 380 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 381 | CODE_SIGN_IDENTITY = ""; 382 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 383 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 384 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 385 | CURRENT_PROJECT_VERSION = 1; 386 | DEFINES_MODULE = YES; 387 | DYLIB_COMPATIBILITY_VERSION = 1; 388 | DYLIB_CURRENT_VERSION = 1; 389 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 390 | INFOPLIST_FILE = "Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-Info.plist"; 391 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 392 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 393 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 394 | MACH_O_TYPE = staticlib; 395 | MODULEMAP_FILE = "Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.modulemap"; 396 | OTHER_LDFLAGS = ""; 397 | OTHER_LIBTOOLFLAGS = ""; 398 | PODS_ROOT = "$(SRCROOT)"; 399 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 400 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 401 | SDKROOT = iphoneos; 402 | SKIP_INSTALL = YES; 403 | TARGETED_DEVICE_FAMILY = "1,2"; 404 | VALIDATE_PRODUCT = YES; 405 | VERSIONING_SYSTEM = "apple-generic"; 406 | VERSION_INFO_PREFIX = ""; 407 | }; 408 | name = Release; 409 | }; 410 | 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */ = { 411 | isa = XCBuildConfiguration; 412 | buildSettings = { 413 | ALWAYS_SEARCH_USER_PATHS = NO; 414 | CLANG_ANALYZER_NONNULL = YES; 415 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 416 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 417 | CLANG_CXX_LIBRARY = "libc++"; 418 | CLANG_ENABLE_MODULES = YES; 419 | CLANG_ENABLE_OBJC_ARC = YES; 420 | CLANG_ENABLE_OBJC_WEAK = YES; 421 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 422 | CLANG_WARN_BOOL_CONVERSION = YES; 423 | CLANG_WARN_COMMA = YES; 424 | CLANG_WARN_CONSTANT_CONVERSION = YES; 425 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 426 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 427 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 428 | CLANG_WARN_EMPTY_BODY = YES; 429 | CLANG_WARN_ENUM_CONVERSION = YES; 430 | CLANG_WARN_INFINITE_RECURSION = YES; 431 | CLANG_WARN_INT_CONVERSION = YES; 432 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 433 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 434 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 435 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 436 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 437 | CLANG_WARN_STRICT_PROTOTYPES = YES; 438 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 439 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 440 | CLANG_WARN_UNREACHABLE_CODE = YES; 441 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 442 | COPY_PHASE_STRIP = NO; 443 | DEBUG_INFORMATION_FORMAT = dwarf; 444 | ENABLE_STRICT_OBJC_MSGSEND = YES; 445 | ENABLE_TESTABILITY = YES; 446 | GCC_C_LANGUAGE_STANDARD = gnu11; 447 | GCC_DYNAMIC_NO_PIC = NO; 448 | GCC_NO_COMMON_BLOCKS = YES; 449 | GCC_OPTIMIZATION_LEVEL = 0; 450 | GCC_PREPROCESSOR_DEFINITIONS = ( 451 | "POD_CONFIGURATION_DEBUG=1", 452 | "DEBUG=1", 453 | "$(inherited)", 454 | ); 455 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 456 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 457 | GCC_WARN_UNDECLARED_SELECTOR = YES; 458 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 459 | GCC_WARN_UNUSED_FUNCTION = YES; 460 | GCC_WARN_UNUSED_VARIABLE = YES; 461 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 462 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 463 | MTL_FAST_MATH = YES; 464 | ONLY_ACTIVE_ARCH = YES; 465 | PRODUCT_NAME = "$(TARGET_NAME)"; 466 | STRIP_INSTALLED_PRODUCT = NO; 467 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 468 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 469 | SWIFT_VERSION = 5.0; 470 | SYMROOT = "${SRCROOT}/../build"; 471 | }; 472 | name = Debug; 473 | }; 474 | 91FB37E2E595D003711D88E40A988763 /* Release */ = { 475 | isa = XCBuildConfiguration; 476 | baseConfigurationReference = 8028D4FDF42F62963E33C8DDC9F9B4EE /* CodableProperty.xcconfig */; 477 | buildSettings = { 478 | CODE_SIGN_IDENTITY = ""; 479 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 480 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 481 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 482 | CURRENT_PROJECT_VERSION = 1; 483 | DEFINES_MODULE = YES; 484 | DYLIB_COMPATIBILITY_VERSION = 1; 485 | DYLIB_CURRENT_VERSION = 1; 486 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 487 | GCC_PREFIX_HEADER = "Target Support Files/CodableProperty/CodableProperty-prefix.pch"; 488 | INFOPLIST_FILE = "Target Support Files/CodableProperty/CodableProperty-Info.plist"; 489 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 490 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 491 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 492 | MODULEMAP_FILE = "Target Support Files/CodableProperty/CodableProperty.modulemap"; 493 | PRODUCT_MODULE_NAME = CodableProperty; 494 | PRODUCT_NAME = CodableProperty; 495 | SDKROOT = iphoneos; 496 | SKIP_INSTALL = YES; 497 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 498 | SWIFT_VERSION = 5.1; 499 | TARGETED_DEVICE_FAMILY = "1,2"; 500 | VALIDATE_PRODUCT = YES; 501 | VERSIONING_SYSTEM = "apple-generic"; 502 | VERSION_INFO_PREFIX = ""; 503 | }; 504 | name = Release; 505 | }; 506 | B1D9DE95F62EF8EBC1B5D9965A107330 /* Debug */ = { 507 | isa = XCBuildConfiguration; 508 | baseConfigurationReference = AE4A2035089EC25A84B118C8CE6A3BD7 /* Pods-CodableProperty_Tests.debug.xcconfig */; 509 | buildSettings = { 510 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 511 | CODE_SIGN_IDENTITY = ""; 512 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 513 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 514 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 515 | CURRENT_PROJECT_VERSION = 1; 516 | DEFINES_MODULE = YES; 517 | DYLIB_COMPATIBILITY_VERSION = 1; 518 | DYLIB_CURRENT_VERSION = 1; 519 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 520 | INFOPLIST_FILE = "Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests-Info.plist"; 521 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 522 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 523 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 524 | MACH_O_TYPE = staticlib; 525 | MODULEMAP_FILE = "Target Support Files/Pods-CodableProperty_Tests/Pods-CodableProperty_Tests.modulemap"; 526 | OTHER_LDFLAGS = ""; 527 | OTHER_LIBTOOLFLAGS = ""; 528 | PODS_ROOT = "$(SRCROOT)"; 529 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 530 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 531 | SDKROOT = iphoneos; 532 | SKIP_INSTALL = YES; 533 | TARGETED_DEVICE_FAMILY = "1,2"; 534 | VERSIONING_SYSTEM = "apple-generic"; 535 | VERSION_INFO_PREFIX = ""; 536 | }; 537 | name = Debug; 538 | }; 539 | FC070AB1632499A397CCAB9EA5537D08 /* Debug */ = { 540 | isa = XCBuildConfiguration; 541 | baseConfigurationReference = 8028D4FDF42F62963E33C8DDC9F9B4EE /* CodableProperty.xcconfig */; 542 | buildSettings = { 543 | CODE_SIGN_IDENTITY = ""; 544 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 545 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 546 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 547 | CURRENT_PROJECT_VERSION = 1; 548 | DEFINES_MODULE = YES; 549 | DYLIB_COMPATIBILITY_VERSION = 1; 550 | DYLIB_CURRENT_VERSION = 1; 551 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 552 | GCC_PREFIX_HEADER = "Target Support Files/CodableProperty/CodableProperty-prefix.pch"; 553 | INFOPLIST_FILE = "Target Support Files/CodableProperty/CodableProperty-Info.plist"; 554 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 555 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 556 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 557 | MODULEMAP_FILE = "Target Support Files/CodableProperty/CodableProperty.modulemap"; 558 | PRODUCT_MODULE_NAME = CodableProperty; 559 | PRODUCT_NAME = CodableProperty; 560 | SDKROOT = iphoneos; 561 | SKIP_INSTALL = YES; 562 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 563 | SWIFT_VERSION = 5.1; 564 | TARGETED_DEVICE_FAMILY = "1,2"; 565 | VERSIONING_SYSTEM = "apple-generic"; 566 | VERSION_INFO_PREFIX = ""; 567 | }; 568 | name = Debug; 569 | }; 570 | /* End XCBuildConfiguration section */ 571 | 572 | /* Begin XCConfigurationList section */ 573 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 574 | isa = XCConfigurationList; 575 | buildConfigurations = ( 576 | 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */, 577 | 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */, 578 | ); 579 | defaultConfigurationIsVisible = 0; 580 | defaultConfigurationName = Release; 581 | }; 582 | 9BE366DD7457C195C09BB64F553B43BA /* Build configuration list for PBXNativeTarget "CodableProperty" */ = { 583 | isa = XCConfigurationList; 584 | buildConfigurations = ( 585 | FC070AB1632499A397CCAB9EA5537D08 /* Debug */, 586 | 91FB37E2E595D003711D88E40A988763 /* Release */, 587 | ); 588 | defaultConfigurationIsVisible = 0; 589 | defaultConfigurationName = Release; 590 | }; 591 | E573D0C8C547E3D57273EA26B5116E6E /* Build configuration list for PBXNativeTarget "Pods-CodableProperty_Tests" */ = { 592 | isa = XCConfigurationList; 593 | buildConfigurations = ( 594 | B1D9DE95F62EF8EBC1B5D9965A107330 /* Debug */, 595 | 63EE308C6CF1566E500BB8387DA808B1 /* Release */, 596 | ); 597 | defaultConfigurationIsVisible = 0; 598 | defaultConfigurationName = Release; 599 | }; 600 | /* End XCConfigurationList section */ 601 | }; 602 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 603 | } 604 | --------------------------------------------------------------------------------