├── .swift-version
├── .ci
├── xcodebuild-data
│ └── .gitkeep
├── scripts
│ ├── lint
│ ├── test-osx
│ └── test-ios
└── buildkite
│ ├── upload
│ └── pipeline.template.yml
├── .fastlane
├── .env
├── Appfile
└── Fastfile
├── .swiftlint.yml
├── header.png
├── Gemfile
├── .codecov.yml
├── .slather.yml
├── ValueCoding.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
├── xcshareddata
│ ├── IDETemplateMacros.plist
│ └── xcschemes
│ │ └── ValueCoding.xcscheme
└── project.pbxproj
├── Supporting Files
├── Version.xcconfig
├── ValueCoding.h
├── Info.plist
├── Warnings.xcconfig
└── ValueCoding.xcconfig
├── .jazzy.json
├── Package.swift
├── Tests
├── Info.plist
├── Support.swift
└── ValueCodingTests.swift
├── .gitignore
├── LICENSE
├── ValueCoding.podspec
├── CHANGELOG.md
├── README.md
├── Sources
└── ValueCoding.swift
└── Gemfile.lock
/.swift-version:
--------------------------------------------------------------------------------
1 | 3.2
2 |
--------------------------------------------------------------------------------
/.ci/xcodebuild-data/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.fastlane/.env:
--------------------------------------------------------------------------------
1 | DEVELOPER_DIR=/Applications/Xcode.app
--------------------------------------------------------------------------------
/.swiftlint.yml:
--------------------------------------------------------------------------------
1 | disabled_rules:
2 | - line_length
3 |
--------------------------------------------------------------------------------
/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danthorpe/ValueCoding/HEAD/header.png
--------------------------------------------------------------------------------
/.fastlane/Appfile:
--------------------------------------------------------------------------------
1 | app_identifier "me.danthorpe.ValueCoding"
2 | apple_id "someone@somewhere.com"
3 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'slather'
4 | gem 'scan'
5 | gem 'fastlane', '>= 1.35'
6 | gem 'xcpretty'
7 |
--------------------------------------------------------------------------------
/.codecov.yml:
--------------------------------------------------------------------------------
1 | comment:
2 | layout: header, changes, diff
3 | coverage:
4 | ignore:
5 | - Tests/.*
6 | status:
7 | patch: false
--------------------------------------------------------------------------------
/.ci/scripts/lint:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | source /usr/local/opt/chruby/share/chruby/chruby.sh
3 | chruby ruby
4 | bundle install --quiet && bundle exec fastlane lint
5 |
--------------------------------------------------------------------------------
/.slather.yml:
--------------------------------------------------------------------------------
1 | coverage_service: coveralls
2 | xcodeproj: ValueCoding.xcodeproj
3 | build_directory: .ci/xcodebuild-data
4 | ignore:
5 | - Tests/*
6 | - Supporting Files/*
--------------------------------------------------------------------------------
/.ci/scripts/test-osx:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | source /usr/local/opt/chruby/share/chruby/chruby.sh
3 | chruby ruby
4 | bundle install --quiet && bundle exec fastlane mac test
5 |
--------------------------------------------------------------------------------
/.ci/scripts/test-ios:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | source /usr/local/opt/chruby/share/chruby/chruby.sh
3 | chruby ruby
4 | bundle install --quiet && bundle exec fastlane ios test
5 |
6 |
--------------------------------------------------------------------------------
/.ci/buildkite/upload:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -eu
4 |
5 | # Makes sure all the steps run on this same agent
6 | sed "s/\$BUILDKITE_AGENT_META_DATA_XCODE/$BUILDKITE_AGENT_META_DATA_XCODE/" .ci/buildkite/pipeline.template.yml
7 |
--------------------------------------------------------------------------------
/ValueCoding.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Supporting Files/Version.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | VALUECODING_VERSION = 3.0.0
12 |
--------------------------------------------------------------------------------
/.jazzy.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Daniel Thorpe",
3 | "author_url": "http://danthorpe.me",
4 | "github_url": "https://github.com/danthorpe/ValueCoding",
5 | "module": "ValueCoding",
6 | "module_version": "2.2.0",
7 | "readme": "README.md",
8 | "swift_version": "3.2",
9 | "xcodebuild_arguments": [
10 | "-project", "ValueCoding.xcodeproj",
11 | "-scheme", "ValueCoding"
12 | ],
13 | "exclude": ["Tests"]
14 | }
15 |
--------------------------------------------------------------------------------
/Supporting Files/ValueCoding.h:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | #import
12 |
13 | FOUNDATION_EXPORT double ValueCodingVersionNumber;
14 |
15 | FOUNDATION_EXPORT const unsigned char ValueCodingVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 14/09/2017.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | // swift-tools-version:4.0
12 |
13 | import PackageDescription
14 |
15 | let package = Package(
16 | name: "ValueCoding",
17 | targets: [
18 | Target(name: "ValueCoding")
19 | ],
20 | exclude: [
21 | "Tests"
22 | ]
23 | )
24 |
--------------------------------------------------------------------------------
/.ci/buildkite/pipeline.template.yml:
--------------------------------------------------------------------------------
1 | steps:
2 | -
3 | name: "Lint"
4 | command: .ci/scripts/lint
5 | agents:
6 | xcode: "$BUILDKITE_AGENT_META_DATA_XCODE"
7 |
8 | -
9 | name: "Mac"
10 | command: .ci/scripts/test-osx
11 | agents:
12 | xcode: "$BUILDKITE_AGENT_META_DATA_XCODE"
13 | -
14 | name: "iOS"
15 | command: .ci/scripts/test-ios
16 | agents:
17 | queue: "iOS-Simulator"
18 | xcode: "$BUILDKITE_AGENT_META_DATA_XCODE"
19 | env:
20 | FL_SLATHER_BUILDKITE_ENABLED: true
21 | FL_SLATHER_COVERALLS_ENABLED: true
22 |
--------------------------------------------------------------------------------
/ValueCoding.xcodeproj/xcshareddata/IDETemplateMacros.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | FILEHEADER
6 |
7 | // ___PROJECTNAME___
8 | // File created on ___DATE___.
9 | //
10 | // Copyright (c) 2015-___YEAR___ Daniel Thorpe
11 | //
12 | // ValueCoding is licensed under the MIT License. Read the full license at
13 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
14 | //
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.fastlane/Fastfile:
--------------------------------------------------------------------------------
1 | lane :lint do
2 |
3 | swiftLint(
4 | mode: :lint,
5 | config_file: '.swiftlint.yml'
6 | )
7 | end
8 |
9 |
10 | platform :ios do
11 |
12 | desc "Runs all the tests"
13 | lane :test do
14 |
15 | scan(
16 | project: "ValueCoding.xcodeproj",
17 | scheme: "ValueCoding",
18 | destination: "platform=iOS Simulator,OS=11.0,name=iPhone SE",
19 | code_coverage: true
20 | )
21 |
22 | end
23 | end
24 |
25 | platform :mac do
26 |
27 | desc "Runs all the tests"
28 | lane :test do
29 |
30 | scan(
31 | project: "ValueCoding.xcodeproj",
32 | scheme: "ValueCoding",
33 | device: "My Mac"
34 | )
35 |
36 | end
37 | end
38 |
--------------------------------------------------------------------------------
/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 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | build/
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | *.xccheckout
14 | *.moved-aside
15 | DerivedData
16 | *.hmap
17 | *.ipa
18 | *.xcuserstate
19 |
20 | # CocoaPods
21 | #
22 | # We recommend against adding the Pods directory to your .gitignore. However
23 | # you should judge for yourself, the pros and cons are mentioned at:
24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
25 | #
26 | # Pods/
27 |
28 | # Carthage
29 | #
30 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
31 | # Carthage/Checkouts
32 |
33 | Carthage/Build
34 | .fastlane/report.xml
35 | .ci/xcodebuild-data
36 | *.coverage.txt
37 | docs
38 |
--------------------------------------------------------------------------------
/Supporting Files/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 | $(VALUECODING_VERSION)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Daniel Thorpe
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/Supporting Files/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES
12 | CLANG_WARN_BOOL_CONVERSION = YES
13 | CLANG_WARN_CONSTANT_CONVERSION = YES
14 | CLANG_WARN_EMPTY_BODY = YES
15 | CLANG_WARN_ENUM_CONVERSION = YES
16 | CLANG_WARN_INFINITE_RECURSION = YES
17 | CLANG_WARN_INT_CONVERSION = YES
18 | CLANG_WARN_SUSPICIOUS_MOVE = YES
19 | CLANG_WARN_UNREACHABLE_CODE = YES
20 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
21 | ENABLE_STRICT_OBJC_MSGSEND = YES
22 | ENABLE_TESTABILITY = YES
23 | GCC_NO_COMMON_BLOCKS = YES
24 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES
25 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR
26 | GCC_WARN_UNDECLARED_SELECTOR = YES
27 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE
28 | GCC_WARN_UNUSED_FUNCTION = YES
29 | GCC_WARN_UNUSED_VARIABLE = YES
30 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR
31 | CLANG_ANALYZER_NONNULL = YES
32 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES
33 | CLANG_WARN_COMMA = YES
34 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES
35 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES
36 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES
37 | CLANG_WARN_STRICT_PROTOTYPES = YES
38 |
--------------------------------------------------------------------------------
/ValueCoding.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "ValueCoding"
3 | s.version = "3.0.0"
4 | s.summary = "Swift protocols for encoding/decoding value types."
5 | s.description = <<-DESC
6 |
7 | ValueCoding is a simple pair of protocols to support the archiving
8 | and unarchiving of Swift value types.
9 |
10 | It works by allowing a value type, which must conform to ValueCoding
11 | to define via a typealias its archiver. The archiver is another type
12 | which implements the ArchiverType protocol. This type will typically
13 | be an NSObject which implements NSCoding and is an adaptor which is
14 | responsible for encoding and decoding the properties of the value.
15 |
16 | DESC
17 | s.homepage = "https://github.com/danthorpe/ValueCoding"
18 | s.license = 'MIT'
19 | s.author = { "Daniel Thorpe" => "@danthorpe" }
20 | s.source = { :git => "https://github.com/danthorpe/ValueCoding.git", :tag => s.version.to_s }
21 | s.module_name = 'ValueCoding'
22 | s.social_media_url = 'https://twitter.com/danthorpe'
23 | s.requires_arc = true
24 | s.ios.deployment_target = '8.0'
25 | s.osx.deployment_target = '10.10'
26 | s.tvos.deployment_target = '9.0'
27 | s.watchos.deployment_target = '2.0'
28 | s.source_files = 'Sources/*.swift'
29 | end
30 |
--------------------------------------------------------------------------------
/Tests/Support.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | import Foundation
12 | import ValueCoding
13 |
14 | struct Foo: ValueCoding {
15 | typealias Coder = FooCoder
16 | let bar: String
17 | }
18 |
19 | class FooCoder: NSObject, NSCoding, CodingProtocol {
20 |
21 | enum Keys: String {
22 | case bar
23 | }
24 |
25 | let value: Foo
26 |
27 | required init(_ aValue: Foo) {
28 | value = aValue
29 | }
30 |
31 | required init?(coder aDecoder: NSCoder) {
32 | let bar = aDecoder.decodeObject(forKey: Keys.bar.rawValue) as? String
33 | value = Foo(bar: bar!)
34 | }
35 |
36 | func encode(with aCoder: NSCoder) {
37 | aCoder.encode(value.bar, forKey: Keys.bar.rawValue)
38 | }
39 | }
40 |
41 | extension Foo: Equatable { }
42 |
43 | func == (lhs: Foo, rhs: Foo) -> Bool {
44 | return lhs.bar == rhs.bar
45 | }
46 |
47 | struct Baz: ValueCoding {
48 | typealias Coder = BazCoder
49 | let bat: String
50 | }
51 |
52 | extension Baz: Equatable { }
53 |
54 | func == (lhs: Baz, rhs: Baz) -> Bool {
55 | return lhs.bat == rhs.bat
56 | }
57 |
58 | class BazCoder: NSObject, NSCoding, CodingProtocol {
59 |
60 | enum Keys: String {
61 | case baz
62 | }
63 |
64 | let value: Baz
65 |
66 | required init(_ aValue: Baz) {
67 | value = aValue
68 | }
69 |
70 | required init?(coder aDecoder: NSCoder) {
71 | let bat = aDecoder.decodeObject(forKey: Keys.baz.rawValue) as? String
72 | value = Baz(bat: bat!)
73 | }
74 |
75 | func encode(with aCoder: NSCoder) {
76 | aCoder.encode(value.bat, forKey: Keys.baz.rawValue)
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/Supporting Files/ValueCoding.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | #include "Version.xcconfig"
12 |
13 | // Metadata
14 | INFOPLIST_FILE_framework = $(SRCROOT)/Supporting Files/Info.plist
15 | INFOPLIST_FILE_xctest = $(SRCROOT)/Tests/Info.plist
16 | INFOPLIST_FILE = $(INFOPLIST_FILE_$(WRAPPER_EXTENSION))
17 |
18 | PRODUCT_BUNDLE_IDENTIFIER_framework = me.danthorpe.ValueCoding
19 | PRODUCT_BUNDLE_IDENTIFIER_xctest = me.danthorpe.ValueCodingTests
20 | PRODUCT_BUNDLE_IDENTIFIER = $(PRODUCT_BUNDLE_IDENTIFIER_$(WRAPPER_EXTENSION))
21 |
22 | PRODUCT_NAME_framework = ValueCoding
23 | PRODUCT_NAME_xctest = ValueCodingTests
24 | PRODUCT_NAME = $(PRODUCT_NAME_$(WRAPPER_EXTENSION))
25 |
26 | APPLICATION_EXTENSION_API_ONLY_framework = YES
27 | APPLICATION_EXTENSION_API_ONLY_xctest = NO
28 | APPLICATION_EXTENSION_API_ONLY = $(APPLICATION_EXTENSION_API_ONLY_$(WRAPPER_EXTENSION))
29 |
30 | // Build Settings
31 | SWIFT_VERSION = 4.0
32 | SWIFT_SWIFT3_OBJC_INFERENCE = YES
33 | SUPPORTED_PLATFORMS = macosx iphoneos appletvos watchos appletvsimulator iphonesimulator watchsimulator
34 | CLANG_ENABLE_CODE_COVERAGE = YES
35 |
36 | // Code Signing
37 | CODE_SIGN_IDENTITY = -
38 |
39 | // Deployment
40 | DEFINES_MODULE = YES
41 |
42 | MACOSX_DEPLOYMENT_TARGET = 10.11
43 | IPHONEOS_DEPLOYMENT_TARGET = 8.0
44 | TVOS_DEPLOYMENT_TARGET = 9.2
45 | WATCHOS_DEPLOYMENT_TARGET = 2.2
46 |
47 | LD_RUNPATH_SEARCH_PATHS_framework = @executable_path/../Frameworks @loader_path/Frameworks
48 | LD_RUNPATH_SEARCH_PATHS_xctest = @loader_path/Frameworks @executable_path/Frameworks @loader_path/../Frameworks @executable_path/../Frameworks
49 | LD_RUNPATH_SEARCH_PATHS = $(LD_RUNPATH_SEARCH_PATHS_$(WRAPPER_EXTENSION))
50 |
51 | #include "Warnings.xcconfig"
52 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # 3.0.0
2 | This is for Xcode 9, Swift 4.0.
3 |
4 | **Please note that _ValueCoding_ is marked as deprecated, as it has been rendered obsolete by Apple introducing the `Codable` protocol. The project has been mothballed, and will no longer be maintained.**
5 |
6 | # 2.2.0
7 | This is for Xcode 9, Swift 3.2.
8 |
9 | # 2.1.0
10 | This is for Xcode 8.1, Swift 3.0.1
11 |
12 | # 2.0.0
13 | This is the Swift 3.0 compatible version.
14 |
15 | The key change here is that `CodingType` has been renamed to `CodingProtocol` in accordance with Swift 3.0 naming style.
16 |
17 | # 1.5.0
18 | This is a Swift 2.3 compatible version
19 |
20 | # 1.4.0
21 | 1. [[VCD-19](https://github.com/danthorpe/ValueCoding/pull/19)]: Recreates the project to use a single multi-platform framework target.
22 |
23 | # 1.3.0
24 | 1. [[VCD-13](https://github.com/danthorpe/ValueCoding/pull/13)]: Switches test coverage reporting to Coveralls. Also adds SwiftLint rules into the project and CI.
25 | 2. [[VCD-14](https://github.com/danthorpe/ValueCoding/pull/14)]: Updates to Swift 2.2 syntax. :)
26 |
27 | # 1.2.0
28 | 1. [[VCD-9, VCD-10](https://github.com/danthorpe/ValueCoding/pull/10)]: Adds support for a single level of nesting inside SequenceType values. For example it is now possible to encode and decode `[[Foo]]` structures where `Foo` conforms to `ValueCoding`.
29 |
30 | # 1.1.1
31 | 1. [[VCD-7](https://github.com/danthorpe/ValueCoding/pull/7)]: Updates CI stuff.
32 | 2. [[VCD-8](https://github.com/danthorpe/ValueCoding/pull/8)]: Updates documentation and README. Thanks [@mrackwitz](https://github.com/danthorpe/ValueCoding/commit/489809da1ba70abf09bc519b784d77a3c47b9f41).
33 |
34 | # 1.1.0
35 | 1. [[VCD-4](https://github.com/danthorpe/ValueCoding/pull/4)]: Supports tvOS platform, and updates to Xcode 7.1
36 |
37 | # 1.0.1
38 | 1. [[VCD-1](https://github.com/danthorpe/ValueCoding/pull/1)]: Sets up cross platform project
39 | 2. [[VCD-2](https://github.com/danthorpe/ValueCoding/pull/2)]: Adds podspec
40 |
--------------------------------------------------------------------------------
/Tests/ValueCodingTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | import Foundation
12 | import XCTest
13 | @testable import ValueCoding
14 |
15 | class ValueCodingTests: XCTestCase {
16 |
17 | var item: Foo!
18 | var items: [Foo]!
19 | var nested: [[Foo]]!
20 |
21 | override func setUp() {
22 | super.setUp()
23 | createFoos()
24 | }
25 |
26 | override func tearDown() {
27 | item = nil
28 | items = nil
29 | super.tearDown()
30 | }
31 |
32 | func createFoos() {
33 | item = Foo(bar: "Hello World")
34 | items = [
35 | item,
36 | Foo(bar: "Hola mundo"),
37 | Foo(bar: "Bonjour le monde"),
38 | Foo(bar: "Hallo Welt"),
39 | Foo(bar: "हैलो वर्ल्ड"),
40 | Foo(bar: "こんにちは世界")
41 | ]
42 | nested = [
43 | items
44 | ]
45 | }
46 |
47 | func test__single_archiving() {
48 | let unarchived = Foo.decode(item.encoded)
49 | XCTAssertNotNil(unarchived)
50 | XCTAssertEqual(unarchived!, item)
51 | }
52 |
53 | func test__single_incorrect_archiving() {
54 | let unarchived = Baz.decode(item.encoded)
55 | XCTAssertNil(unarchived)
56 | }
57 |
58 | func test__multiple_archiving() {
59 | let unarchived: [Foo] = Foo.decode(items.encoded)
60 | XCTAssertEqual(unarchived, items)
61 | }
62 |
63 | func test__nested_archiving() {
64 | let unarchived: [[Foo]] = Foo.decode(nested.encoded)
65 | XCTAssertEqual(unarchived.count, 1)
66 | XCTAssertEqual(unarchived[0], nested[0])
67 | }
68 |
69 | func test__with_single_nil() {
70 | let empty: AnyObject? = .none
71 | XCTAssertNil(Foo.decode(empty))
72 | }
73 |
74 | func test__with_sequence_nil() {
75 | let empty: [AnyObject]? = .none
76 | XCTAssertTrue(Foo.decode(empty).isEmpty)
77 | }
78 |
79 | func test__with_nested_nil() {
80 | let empty: [[AnyObject]]? = .none
81 | XCTAssertTrue(Foo.decode(empty).isEmpty)
82 | }
83 |
84 | func test__get_values_from_sequence_of_archivers() {
85 | XCTAssertEqual(items.encoded.values, items)
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/ValueCoding.xcodeproj/xcshareddata/xcschemes/ValueCoding.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
32 |
33 |
35 |
41 |
42 |
43 |
44 |
45 |
51 |
52 |
53 |
54 |
55 |
56 |
67 |
68 |
74 |
75 |
76 |
77 |
78 |
79 |
85 |
86 |
92 |
93 |
94 |
95 |
97 |
98 |
101 |
102 |
103 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | [](https://buildkite.com/blindingskies/valuecoding)
4 | [](https://coveralls.io/github/danthorpe/ValueCoding?branch=development)
5 | [](https://img.shields.io/cocoapods/v/ValueCoding.svg)
6 | [](https://github.com/Carthage/Carthage)
7 | [](http://cocoadocs.org/docsets/ValueCoding)
8 |
9 | # ValueCoding
10 |
11 | **Please note that _ValueCoding_ is marked as deprecated, as it has been rendered obsolete by Apple introducing the `Codable` protocol with Swift 4.0. The project has been mothballed, and will no longer be maintained.**
12 |
13 | ValueCoding is a simple pair of protocols to support the coding of Swift value types.
14 |
15 | It works by allowing a value type, which must conform to `ValueCoding` to define via a typealias its *coder*. The coder is another type which implements the `CoderType` protocol. This type will typically be an `NSObject` which implements `NSCoding` and is an adaptor which is responsible for encoding and decoding the properties of the value.
16 |
17 | A minimal example for a simple `struct` is shown below:
18 |
19 | ```swift
20 | import ValueCoding
21 |
22 | struct Foo: ValueCoding {
23 | typealias Coder = FooCoder
24 | let bar: String
25 | }
26 |
27 | class FooCoder: NSObject, NSCoding, CodingType {
28 |
29 | enum Keys: String {
30 | case bar = "bar"
31 | }
32 |
33 | let value: Foo
34 |
35 | required init(_ v: Foo) {
36 | value = v
37 | }
38 |
39 | required init?(coder aDecoder: NSCoder) {
40 | let bar = aDecoder.decodeObjectForKey(Keys.Bar.rawValue) as? String
41 | value = Foo(bar: bar!)
42 | }
43 |
44 | func encodeWithCoder(aCoder: NSCoder) {
45 | aCoder.encodeObject(value.bar, forKey: Keys.Bar.rawValue)
46 | }
47 | }
48 | ```
49 |
50 | If you are converting existing models from classes to values types, the `NSCoding` methods should look familiar, and hopefully you are able to reuse your existing code.
51 |
52 | The framework provides static methods and properties for types which conform to `ValueCoding` with valid coders. Therefore, given a value of `Foo`, you can encode it ready for archiving using `NSKeyedArchiver`.
53 |
54 | ```swift
55 | let data = NSKeyedArchiver.archivedDataWithRootObject(foo.encoded)
56 | ```
57 |
58 | and likewise, decoding from unarchiving can be done:
59 |
60 | ```swift
61 | if let foo = Foo.decode(NSKeyedUnarchiver.unarchiveObjectWithData(data)) {
62 | // etc, decode returns optionals when working with a single item.
63 | }
64 | ```
65 |
66 | These methods can also be used if composing value types inside other types which require encoding.
67 |
68 | When working with sequences of values, use the `encoded` property on the sequence.
69 |
70 | ```swift
71 | let foos = Set(arrayLiteral: Foo(), Foo(), Foo())
72 | let data = NSKeyedArchiver.archivedDataWithRootObject(foos.encoded)
73 | ```
74 |
75 | When decoding an `NSArray`, perform a conditional cast to `[AnyObject]` before passing it to `decode`. The result will be an `Array` which will be empty if the object was not cast successfully. In addition, any members of `[AnyObject]` which did not decode will be filtered from the result. This means that the length of the result will be less than the original encoded array if there was an issue decoding.
76 |
77 | ```swift
78 | let foos = Foo.decode(NSKeyedUnarchiver.unarchiveObjectWithData(data) as? [AnyObject])
79 | ```
80 | ### CoderType Examples
81 |
82 | The [Money](https://github.com/danthorpe/Money) framework contains more examples of implementing `ValueCoding`. Including the generic type [`FXTransactionCoder`](https://github.com/danthorpe/Money/blob/development/Money/Shared/FX/FX.swift#L467).
83 |
84 | The [YapDatabaseExtensions](https://github.com/danthorpe/YapDatabaseExtensions) framework relies heavily on `ValueCoding`. For more examples of generic where constraints see its [Functional API](https://github.com/danthorpe/YapDatabaseExtensions/tree/development/YapDatabaseExtensions/Shared/Functional).
85 |
86 | ### Installation
87 | ValueCoding builds as a cross platform (iOS, OS X, watchOS, tvOS) extension compatible framework. It is also available via CocoaPods
88 |
89 | ```ruby
90 | pod 'ValueCoding'
91 | ```
92 |
--------------------------------------------------------------------------------
/Sources/ValueCoding.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValueCoding
3 | // File created on 11/10/2015.
4 | //
5 | // Copyright (c) 2015-2017 Daniel Thorpe
6 | //
7 | // ValueCoding is licensed under the MIT License. Read the full license at
8 | // https://github.com/danthorpe/ValueCoding/blob/master/LICENSE
9 | //
10 |
11 | import Foundation
12 |
13 | // MARK: - CodingProtocol
14 |
15 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
16 | public protocol CodedValue {
17 |
18 | /**
19 | The type of the composed value, Value
20 |
21 | - see: ValueCoding
22 | */
23 | associatedtype Value
24 |
25 | /// The value type which was coded
26 | var value: Value { get }
27 | }
28 |
29 | /**
30 | A generic protocol for classes which can
31 | encode/decode value types.
32 | */
33 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
34 | public protocol CodingProtocol: CodedValue {
35 |
36 | /// Required initializer receiving the wrapped value type.
37 | init(_: Value)
38 | }
39 |
40 | // MARK: - ValueCoding
41 |
42 | /**
43 | A generic protocol for value types which require
44 | coding.
45 | */
46 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
47 | public protocol ValueCoding {
48 |
49 | /**
50 | The Coder which implements CodingProtocol
51 |
52 | - see: CodingProtocol
53 | */
54 | associatedtype Coder: CodingProtocol
55 | }
56 |
57 | // MARK: - Protocol Extensions
58 |
59 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
60 | public extension Sequence where Iterator.Element: CodingProtocol {
61 |
62 | /// Access the values from a sequence of coders.
63 | var values: [Iterator.Element.Value] {
64 | return map { $0.value }
65 | }
66 | }
67 |
68 | /**
69 | Static methods for decoding `AnyObject` to Self, and returning encoded object
70 | of Self.
71 | */
72 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
73 | public extension ValueCoding where Coder: NSCoding, Coder.Value == Self {
74 |
75 | /**
76 | Decodes the value from a single decoder, if possible.
77 | For example
78 |
79 | let foo = Foo.decode(decoder.decodeObjectForKey("foo"))
80 |
81 | - parameter object: an optional `AnyObject` which if not nil should
82 | be of `Coder` type.
83 | - returns: an optional `Self`
84 | */
85 | static func decode(_ object: Any?) -> Self? {
86 | return (object as? Coder)?.value
87 | }
88 |
89 | /**
90 | Decodes the values from a sequence of coders, if possible
91 | For example
92 |
93 | let foos = Foo.decode(decoder.decodeObjectForKey("foos") as? [AnyObject])
94 |
95 | - parameter objects: a `SequenceType` of `AnyObject`.
96 | - returns: the array of values which were able to be unarchived.
97 | */
98 | static func decode(_ objects: S?) -> [Self] where S.Iterator.Element: Any {
99 | return objects?.flatMap(Self.decode) ?? []
100 | }
101 |
102 | /**
103 | Decodes the values from a sequence of sequence of coders, if possible
104 |
105 | - parameter objects: a `SequenceType` of `SequenceType` of `AnyObject`.
106 | - returns: the array of arrays of values which were able to be unarchived.
107 | */
108 | static func decode(_ objects: S?) -> [[Self]] where S.Iterator.Element: Sequence, S.Iterator.Element.Iterator.Element: Any {
109 | return objects?.flatMap(Self.decode) ?? []
110 | }
111 |
112 | /**
113 | Encodes the value type into its Coder.
114 |
115 | Typically this would be used inside of
116 | `encodeWithCoder:` when the value is composed inside
117 | another `ValueCoding` or `NSCoding` type. For example:
118 |
119 | encoder.encodeObject(foo.encoded, forKey: "foo")
120 |
121 | */
122 | var encoded: Coder {
123 | return Coder(self)
124 | }
125 | }
126 |
127 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
128 | extension Sequence where
129 | Iterator.Element: ValueCoding,
130 | Iterator.Element.Coder: NSCoding,
131 | Iterator.Element.Coder.Value == Iterator.Element {
132 |
133 | /**
134 | Encodes the sequence of value types into an array of coders.
135 |
136 | Typically this would be used inside of
137 | `encodeWithCoder:` when a sequence of values is
138 | composed inside another `ValueCoding` or
139 | `NSCoding` type. For example:
140 |
141 | encoder.encodeObject(foos.encoded, forKey: "foos")
142 |
143 | */
144 | public var encoded: [Iterator.Element.Coder] {
145 | return map { $0.encoded }
146 | }
147 | }
148 |
149 | @available(*, deprecated, message: "ValueCoding is deprecated as it has been rendered obsolete by Codable in Swift 4.")
150 | extension Sequence where
151 | Iterator.Element: Sequence,
152 | Iterator.Element.Iterator.Element: ValueCoding,
153 | Iterator.Element.Iterator.Element.Coder: NSCoding,
154 | Iterator.Element.Iterator.Element.Coder.Value == Iterator.Element.Iterator.Element {
155 |
156 | /**
157 | Encodes a sequence of sequences of value types into
158 | an array of arrays of coders.
159 | */
160 | public var encoded: [[Iterator.Element.Iterator.Element.Coder]] {
161 | return map { $0.encoded }
162 | }
163 | }
164 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | CFPropertyList (2.3.3)
5 | activesupport (4.2.7.1)
6 | i18n (~> 0.7)
7 | json (~> 1.7, >= 1.7.7)
8 | minitest (~> 5.1)
9 | thread_safe (~> 0.3, >= 0.3.4)
10 | tzinfo (~> 1.1)
11 | addressable (2.4.0)
12 | babosa (1.0.2)
13 | cert (1.4.3)
14 | fastlane_core (>= 0.52.1, < 1.0.0)
15 | spaceship (>= 0.34.2, < 1.0.0)
16 | claide (1.0.1)
17 | clamp (0.6.5)
18 | colored (1.2)
19 | commander (4.4.0)
20 | highline (~> 1.7.2)
21 | credentials_manager (0.16.2)
22 | colored
23 | commander (>= 4.3.5)
24 | highline (>= 1.7.1)
25 | security
26 | deliver (1.14.5)
27 | credentials_manager (>= 0.16.2, < 1.0.0)
28 | fastimage (~> 1.6)
29 | fastlane_core (>= 0.53.0, < 1.0.0)
30 | plist (>= 3.1.0, < 4.0.0)
31 | spaceship (>= 0.36.2, < 1.0.0)
32 | domain_name (0.5.20161021)
33 | unf (>= 0.0.5, < 1.0.0)
34 | dotenv (2.1.1)
35 | excon (0.54.0)
36 | faraday (0.9.2)
37 | multipart-post (>= 1.2, < 3)
38 | faraday-cookie_jar (0.0.6)
39 | faraday (>= 0.7.4)
40 | http-cookie (~> 1.0.0)
41 | faraday_middleware (0.10.0)
42 | faraday (>= 0.7.4, < 0.10)
43 | fastimage (1.6.8)
44 | addressable (~> 2.3, >= 2.3.5)
45 | fastlane (1.106.2)
46 | activesupport (< 5)
47 | addressable (>= 2.3, < 3.0.0)
48 | bundler (~> 1.12)
49 | cert (>= 1.4.3, < 2.0.0)
50 | credentials_manager (>= 0.16.2, < 1.0.0)
51 | deliver (>= 1.14.4, < 2.0.0)
52 | fastlane_core (>= 0.53.0, < 1.0.0)
53 | frameit (>= 3.0.0, < 4.0.0)
54 | gym (>= 1.11.3, < 2.0.0)
55 | krausefx-shenzhen (>= 0.14.10, < 1.0.0)
56 | match (>= 0.9.0, < 1.0.0)
57 | multipart-post (~> 2.0.0)
58 | pem (>= 1.3.2, < 2.0.0)
59 | pilot (>= 1.11.1, < 2.0.0)
60 | plist (>= 3.1.0, < 4.0.0)
61 | produce (>= 1.2.1, < 2.0.0)
62 | scan (>= 0.13.1, < 1.0.0)
63 | screengrab (>= 0.5.2, < 1.0.0)
64 | sigh (>= 1.11.2, < 2.0.0)
65 | slack-notifier (>= 1.3, < 2.0.0)
66 | snapshot (>= 1.16.2, < 2.0.0)
67 | spaceship (>= 0.36.2, < 1.0.0)
68 | supply (>= 0.7.1, < 1.0.0)
69 | terminal-notifier (>= 1.6.2, < 2.0.0)
70 | terminal-table (>= 1.4.5, < 2.0.0)
71 | word_wrap (~> 1.0.0)
72 | xcode-install (~> 2.0.0)
73 | xcodeproj (>= 0.20, < 2.0.0)
74 | xcpretty (>= 0.2.4, < 1.0.0)
75 | fastlane_core (0.53.0)
76 | babosa
77 | colored
78 | commander (>= 4.4.0, <= 5.0.0)
79 | credentials_manager (>= 0.16.2, < 1.0.0)
80 | excon (>= 0.45.0, < 1.0)
81 | gh_inspector (>= 1.0.1, < 2.0.0)
82 | highline (>= 1.7.2)
83 | json
84 | multi_json
85 | plist (>= 3.1.0, < 4.0.0)
86 | rubyzip (~> 1.1.6)
87 | terminal-table (>= 1.4.5, < 2.0.0)
88 | frameit (3.0.0)
89 | deliver (> 0.3)
90 | fastimage (~> 1.6.3)
91 | fastlane_core (>= 0.53.0, < 1.0.0)
92 | mini_magick (~> 4.5.1)
93 | gh_inspector (1.0.2)
94 | google-api-client (0.9.19)
95 | addressable (~> 2.3)
96 | googleauth (~> 0.5)
97 | httpclient (~> 2.7)
98 | hurley (~> 0.1)
99 | memoist (~> 0.11)
100 | mime-types (>= 1.6)
101 | representable (~> 2.3.0)
102 | retriable (~> 2.0)
103 | googleauth (0.5.1)
104 | faraday (~> 0.9)
105 | jwt (~> 1.4)
106 | logging (~> 2.0)
107 | memoist (~> 0.12)
108 | multi_json (~> 1.11)
109 | os (~> 0.9)
110 | signet (~> 0.7)
111 | gym (1.11.3)
112 | fastlane_core (>= 0.52.1, < 1.0.0)
113 | plist (>= 3.1.0, < 4.0.0)
114 | rubyzip (>= 1.1.7)
115 | terminal-table (>= 1.4.5, < 2.0.0)
116 | xcpretty (>= 0.2.4, < 1.0.0)
117 | highline (1.7.8)
118 | http-cookie (1.0.3)
119 | domain_name (~> 0.5)
120 | httpclient (2.8.2.4)
121 | hurley (0.2)
122 | i18n (0.7.0)
123 | json (1.8.3)
124 | jwt (1.5.6)
125 | krausefx-shenzhen (0.14.10)
126 | commander (>= 4.3, < 5.0)
127 | dotenv (>= 0.7)
128 | faraday (~> 0.9)
129 | faraday_middleware (~> 0.9)
130 | highline (>= 1.7.2)
131 | json (~> 1.8)
132 | net-sftp (~> 2.1.2)
133 | plist (~> 3.1.0)
134 | rubyzip (~> 1.1)
135 | security (~> 0.1.3)
136 | terminal-table (~> 1.4.5)
137 | little-plugger (1.1.4)
138 | logging (2.1.0)
139 | little-plugger (~> 1.1)
140 | multi_json (~> 1.10)
141 | match (0.10.0)
142 | cert (>= 1.4.3, < 2.0.0)
143 | credentials_manager (>= 0.16.2, < 1.0.0)
144 | fastlane_core (>= 0.53.0, < 1.0.0)
145 | security
146 | sigh (>= 1.11.2, < 2.0.0)
147 | spaceship (>= 0.36.1, < 1.0.0)
148 | memoist (0.15.0)
149 | mime-types (3.1)
150 | mime-types-data (~> 3.2015)
151 | mime-types-data (3.2016.0521)
152 | mini_magick (4.5.1)
153 | mini_portile2 (2.1.0)
154 | minitest (5.9.1)
155 | multi_json (1.12.1)
156 | multi_xml (0.5.5)
157 | multipart-post (2.0.0)
158 | nanaimo (0.1.2)
159 | net-sftp (2.1.2)
160 | net-ssh (>= 2.6.5)
161 | net-ssh (3.2.0)
162 | nokogiri (1.6.8.1)
163 | mini_portile2 (~> 2.1.0)
164 | os (0.9.6)
165 | pem (1.3.2)
166 | fastlane_core (>= 0.43.1, < 1.0.0)
167 | spaceship (>= 0.26.2, < 1.0.0)
168 | pilot (1.11.1)
169 | credentials_manager (>= 0.16.0)
170 | fastlane_core (>= 0.53.0, < 1.0.0)
171 | spaceship (>= 0.36.2, < 1.0.0)
172 | terminal-table (>= 1.4.5, < 2.0.0)
173 | plist (3.1.0)
174 | produce (1.2.1)
175 | fastlane_core (>= 0.52.1, < 1.0.0)
176 | spaceship (>= 0.34.2, < 1.0.0)
177 | representable (2.3.0)
178 | uber (~> 0.0.7)
179 | retriable (2.1.0)
180 | rouge (1.11.1)
181 | rubyzip (1.1.7)
182 | scan (0.13.1)
183 | fastlane_core (>= 0.52.1, < 1.0.0)
184 | slack-notifier (~> 1.3)
185 | terminal-table
186 | xcpretty (>= 0.2.2)
187 | xcpretty-travis-formatter (>= 0.0.3)
188 | screengrab (0.5.5)
189 | fastlane_core (>= 0.52.1, < 1.0.0)
190 | security (0.1.3)
191 | sigh (1.11.2)
192 | fastlane_core (>= 0.52.1, < 1.0.0)
193 | plist (~> 3.1)
194 | spaceship (>= 0.34.2, < 1.0.0)
195 | signet (0.7.3)
196 | addressable (~> 2.3)
197 | faraday (~> 0.9)
198 | jwt (~> 1.5)
199 | multi_json (~> 1.10)
200 | slack-notifier (1.5.1)
201 | slather (2.3.0)
202 | activesupport (>= 4.0.2, < 5)
203 | clamp (~> 0.6)
204 | nokogiri (~> 1.6.3)
205 | xcodeproj (>= 0.20, < 2.0.0)
206 | snapshot (1.16.3)
207 | fastimage (~> 1.6.3)
208 | fastlane_core (>= 0.53.0, < 1.0.0)
209 | plist (>= 3.1.0, < 4.0.0)
210 | xcpretty (>= 0.2.4, < 1.0.0)
211 | spaceship (0.36.2)
212 | colored
213 | credentials_manager (>= 0.16.0)
214 | faraday (~> 0.9)
215 | faraday-cookie_jar (~> 0.0.6)
216 | faraday_middleware (~> 0.9)
217 | fastimage (~> 1.6)
218 | multi_xml (~> 0.5)
219 | plist (>= 3.1.0, < 4.0.0)
220 | supply (0.7.1)
221 | credentials_manager (>= 0.15.0)
222 | fastlane_core (>= 0.43.4)
223 | google-api-client (~> 0.9.1)
224 | terminal-notifier (1.7.1)
225 | terminal-table (1.4.5)
226 | thread_safe (0.3.5)
227 | tzinfo (1.2.2)
228 | thread_safe (~> 0.1)
229 | uber (0.0.15)
230 | unf (0.1.4)
231 | unf_ext
232 | unf_ext (0.0.7.2)
233 | word_wrap (1.0.0)
234 | xcode-install (2.0.8)
235 | claide (>= 0.9.1, < 1.1.0)
236 | spaceship (>= 0.25.1, < 1.0.0)
237 | xcodeproj (1.4.0)
238 | CFPropertyList (~> 2.3.3)
239 | activesupport (>= 3)
240 | claide (>= 1.0.1, < 2.0)
241 | colored (~> 1.2)
242 | nanaimo (~> 0.1.0)
243 | xcpretty (0.2.4)
244 | rouge (~> 1.8)
245 | xcpretty-travis-formatter (0.0.4)
246 | xcpretty (~> 0.2, >= 0.0.7)
247 |
248 | PLATFORMS
249 | ruby
250 |
251 | DEPENDENCIES
252 | fastlane (>= 1.35)
253 | scan
254 | slather
255 | xcpretty
256 |
257 | BUNDLED WITH
258 | 1.13.6
259 |
--------------------------------------------------------------------------------
/ValueCoding.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 658A7B661D776B7600F897C8 /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 658A7B5C1D776B7600F897C8 /* ValueCoding.framework */; };
11 | 65CF6F551D776BBC004B3503 /* ValueCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65CF6F511D776BBC004B3503 /* ValueCoding.swift */; };
12 | 65CF6F571D776BBC004B3503 /* ValueCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CF6F541D776BBC004B3503 /* ValueCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
13 | 65CF6F5D1D77744D004B3503 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65CF6F5B1D77744D004B3503 /* Support.swift */; };
14 | 65CF6F5E1D77744D004B3503 /* ValueCodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65CF6F5C1D77744D004B3503 /* ValueCodingTests.swift */; };
15 | /* End PBXBuildFile section */
16 |
17 | /* Begin PBXContainerItemProxy section */
18 | 658A7B671D776B7600F897C8 /* PBXContainerItemProxy */ = {
19 | isa = PBXContainerItemProxy;
20 | containerPortal = 658A7B511D776B4100F897C8 /* Project object */;
21 | proxyType = 1;
22 | remoteGlobalIDString = 658A7B5B1D776B7600F897C8;
23 | remoteInfo = ValueCoding;
24 | };
25 | /* End PBXContainerItemProxy section */
26 |
27 | /* Begin PBXFileReference section */
28 | 658A7B5C1D776B7600F897C8 /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; };
29 | 658A7B651D776B7600F897C8 /* ValueCodingTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ValueCodingTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
30 | 65A3B8821DC659FE0042BB95 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; };
31 | 65CF6F511D776BBC004B3503 /* ValueCoding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ValueCoding.swift; sourceTree = ""; };
32 | 65CF6F531D776BBC004B3503 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
33 | 65CF6F541D776BBC004B3503 /* ValueCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValueCoding.h; sourceTree = ""; };
34 | 65CF6F581D776BD5004B3503 /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; };
35 | 65CF6F591D77704D004B3503 /* ValueCoding.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = ValueCoding.xcconfig; sourceTree = ""; };
36 | 65CF6F5B1D77744D004B3503 /* Support.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; };
37 | 65CF6F5C1D77744D004B3503 /* ValueCodingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ValueCodingTests.swift; sourceTree = ""; };
38 | /* End PBXFileReference section */
39 |
40 | /* Begin PBXFrameworksBuildPhase section */
41 | 658A7B581D776B7600F897C8 /* Frameworks */ = {
42 | isa = PBXFrameworksBuildPhase;
43 | buildActionMask = 2147483647;
44 | files = (
45 | );
46 | runOnlyForDeploymentPostprocessing = 0;
47 | };
48 | 658A7B621D776B7600F897C8 /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | 658A7B661D776B7600F897C8 /* ValueCoding.framework in Frameworks */,
53 | );
54 | runOnlyForDeploymentPostprocessing = 0;
55 | };
56 | /* End PBXFrameworksBuildPhase section */
57 |
58 | /* Begin PBXGroup section */
59 | 658A7B501D776B4100F897C8 = {
60 | isa = PBXGroup;
61 | children = (
62 | 65CF6F501D776BBC004B3503 /* Sources */,
63 | 65CF6F5A1D77744D004B3503 /* Tests */,
64 | 65A3B8811DC659EA0042BB95 /* ... */,
65 | );
66 | sourceTree = "";
67 | };
68 | 658A7B5D1D776B7600F897C8 /* Products */ = {
69 | isa = PBXGroup;
70 | children = (
71 | 658A7B5C1D776B7600F897C8 /* ValueCoding.framework */,
72 | 658A7B651D776B7600F897C8 /* ValueCodingTests.xctest */,
73 | );
74 | name = Products;
75 | sourceTree = "";
76 | };
77 | 65A3B8811DC659EA0042BB95 /* ... */ = {
78 | isa = PBXGroup;
79 | children = (
80 | 65CF6F521D776BBC004B3503 /* Supporting Files */,
81 | 658A7B5D1D776B7600F897C8 /* Products */,
82 | );
83 | name = ...;
84 | sourceTree = "";
85 | };
86 | 65CF6F501D776BBC004B3503 /* Sources */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 65CF6F511D776BBC004B3503 /* ValueCoding.swift */,
90 | );
91 | path = Sources;
92 | sourceTree = "";
93 | };
94 | 65CF6F521D776BBC004B3503 /* Supporting Files */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 65CF6F541D776BBC004B3503 /* ValueCoding.h */,
98 | 65CF6F531D776BBC004B3503 /* Info.plist */,
99 | 65CF6F591D77704D004B3503 /* ValueCoding.xcconfig */,
100 | 65CF6F581D776BD5004B3503 /* Version.xcconfig */,
101 | 65A3B8821DC659FE0042BB95 /* Warnings.xcconfig */,
102 | );
103 | path = "Supporting Files";
104 | sourceTree = "";
105 | };
106 | 65CF6F5A1D77744D004B3503 /* Tests */ = {
107 | isa = PBXGroup;
108 | children = (
109 | 65CF6F5B1D77744D004B3503 /* Support.swift */,
110 | 65CF6F5C1D77744D004B3503 /* ValueCodingTests.swift */,
111 | );
112 | path = Tests;
113 | sourceTree = "";
114 | };
115 | /* End PBXGroup section */
116 |
117 | /* Begin PBXHeadersBuildPhase section */
118 | 658A7B591D776B7600F897C8 /* Headers */ = {
119 | isa = PBXHeadersBuildPhase;
120 | buildActionMask = 2147483647;
121 | files = (
122 | 65CF6F571D776BBC004B3503 /* ValueCoding.h in Headers */,
123 | );
124 | runOnlyForDeploymentPostprocessing = 0;
125 | };
126 | /* End PBXHeadersBuildPhase section */
127 |
128 | /* Begin PBXNativeTarget section */
129 | 658A7B5B1D776B7600F897C8 /* ValueCoding */ = {
130 | isa = PBXNativeTarget;
131 | buildConfigurationList = 658A7B6E1D776B7600F897C8 /* Build configuration list for PBXNativeTarget "ValueCoding" */;
132 | buildPhases = (
133 | 658A7B571D776B7600F897C8 /* Sources */,
134 | 658A7B581D776B7600F897C8 /* Frameworks */,
135 | 658A7B591D776B7600F897C8 /* Headers */,
136 | 658A7B5A1D776B7600F897C8 /* Resources */,
137 | );
138 | buildRules = (
139 | );
140 | dependencies = (
141 | );
142 | name = ValueCoding;
143 | productName = ValueCoding;
144 | productReference = 658A7B5C1D776B7600F897C8 /* ValueCoding.framework */;
145 | productType = "com.apple.product-type.framework";
146 | };
147 | 658A7B641D776B7600F897C8 /* ValueCodingTests */ = {
148 | isa = PBXNativeTarget;
149 | buildConfigurationList = 658A7B711D776B7600F897C8 /* Build configuration list for PBXNativeTarget "ValueCodingTests" */;
150 | buildPhases = (
151 | 658A7B611D776B7600F897C8 /* Sources */,
152 | 658A7B621D776B7600F897C8 /* Frameworks */,
153 | 658A7B631D776B7600F897C8 /* Resources */,
154 | );
155 | buildRules = (
156 | );
157 | dependencies = (
158 | 658A7B681D776B7600F897C8 /* PBXTargetDependency */,
159 | );
160 | name = ValueCodingTests;
161 | productName = ValueCodingTests;
162 | productReference = 658A7B651D776B7600F897C8 /* ValueCodingTests.xctest */;
163 | productType = "com.apple.product-type.bundle.unit-test";
164 | };
165 | /* End PBXNativeTarget section */
166 |
167 | /* Begin PBXProject section */
168 | 658A7B511D776B4100F897C8 /* Project object */ = {
169 | isa = PBXProject;
170 | attributes = {
171 | LastSwiftUpdateCheck = 0800;
172 | LastUpgradeCheck = 0900;
173 | TargetAttributes = {
174 | 658A7B5B1D776B7600F897C8 = {
175 | CreatedOnToolsVersion = 8.0;
176 | LastSwiftMigration = 0900;
177 | ProvisioningStyle = Automatic;
178 | };
179 | 658A7B641D776B7600F897C8 = {
180 | CreatedOnToolsVersion = 8.0;
181 | LastSwiftMigration = 0900;
182 | ProvisioningStyle = Automatic;
183 | };
184 | };
185 | };
186 | buildConfigurationList = 658A7B541D776B4100F897C8 /* Build configuration list for PBXProject "ValueCoding" */;
187 | compatibilityVersion = "Xcode 3.2";
188 | developmentRegion = English;
189 | hasScannedForEncodings = 0;
190 | knownRegions = (
191 | en,
192 | );
193 | mainGroup = 658A7B501D776B4100F897C8;
194 | productRefGroup = 658A7B5D1D776B7600F897C8 /* Products */;
195 | projectDirPath = "";
196 | projectRoot = "";
197 | targets = (
198 | 658A7B5B1D776B7600F897C8 /* ValueCoding */,
199 | 658A7B641D776B7600F897C8 /* ValueCodingTests */,
200 | );
201 | };
202 | /* End PBXProject section */
203 |
204 | /* Begin PBXResourcesBuildPhase section */
205 | 658A7B5A1D776B7600F897C8 /* Resources */ = {
206 | isa = PBXResourcesBuildPhase;
207 | buildActionMask = 2147483647;
208 | files = (
209 | );
210 | runOnlyForDeploymentPostprocessing = 0;
211 | };
212 | 658A7B631D776B7600F897C8 /* Resources */ = {
213 | isa = PBXResourcesBuildPhase;
214 | buildActionMask = 2147483647;
215 | files = (
216 | );
217 | runOnlyForDeploymentPostprocessing = 0;
218 | };
219 | /* End PBXResourcesBuildPhase section */
220 |
221 | /* Begin PBXSourcesBuildPhase section */
222 | 658A7B571D776B7600F897C8 /* Sources */ = {
223 | isa = PBXSourcesBuildPhase;
224 | buildActionMask = 2147483647;
225 | files = (
226 | 65CF6F551D776BBC004B3503 /* ValueCoding.swift in Sources */,
227 | );
228 | runOnlyForDeploymentPostprocessing = 0;
229 | };
230 | 658A7B611D776B7600F897C8 /* Sources */ = {
231 | isa = PBXSourcesBuildPhase;
232 | buildActionMask = 2147483647;
233 | files = (
234 | 65CF6F5D1D77744D004B3503 /* Support.swift in Sources */,
235 | 65CF6F5E1D77744D004B3503 /* ValueCodingTests.swift in Sources */,
236 | );
237 | runOnlyForDeploymentPostprocessing = 0;
238 | };
239 | /* End PBXSourcesBuildPhase section */
240 |
241 | /* Begin PBXTargetDependency section */
242 | 658A7B681D776B7600F897C8 /* PBXTargetDependency */ = {
243 | isa = PBXTargetDependency;
244 | target = 658A7B5B1D776B7600F897C8 /* ValueCoding */;
245 | targetProxy = 658A7B671D776B7600F897C8 /* PBXContainerItemProxy */;
246 | };
247 | /* End PBXTargetDependency section */
248 |
249 | /* Begin XCBuildConfiguration section */
250 | 658A7B551D776B4100F897C8 /* Debug */ = {
251 | isa = XCBuildConfiguration;
252 | baseConfigurationReference = 65CF6F591D77704D004B3503 /* ValueCoding.xcconfig */;
253 | buildSettings = {
254 | ONLY_ACTIVE_ARCH = YES;
255 | };
256 | name = Debug;
257 | };
258 | 658A7B561D776B4100F897C8 /* Release */ = {
259 | isa = XCBuildConfiguration;
260 | baseConfigurationReference = 65CF6F591D77704D004B3503 /* ValueCoding.xcconfig */;
261 | buildSettings = {
262 | };
263 | name = Release;
264 | };
265 | 658A7B6F1D776B7600F897C8 /* Debug */ = {
266 | isa = XCBuildConfiguration;
267 | buildSettings = {
268 | ALWAYS_SEARCH_USER_PATHS = NO;
269 | CLANG_ANALYZER_NONNULL = YES;
270 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
271 | CLANG_CXX_LIBRARY = "libc++";
272 | CLANG_ENABLE_MODULES = YES;
273 | CLANG_ENABLE_OBJC_ARC = YES;
274 | CLANG_WARN_BOOL_CONVERSION = YES;
275 | CLANG_WARN_CONSTANT_CONVERSION = YES;
276 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
277 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
278 | CLANG_WARN_EMPTY_BODY = YES;
279 | CLANG_WARN_ENUM_CONVERSION = YES;
280 | CLANG_WARN_INFINITE_RECURSION = YES;
281 | CLANG_WARN_INT_CONVERSION = YES;
282 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
283 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
284 | CLANG_WARN_UNREACHABLE_CODE = YES;
285 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
286 | COMBINE_HIDPI_IMAGES = YES;
287 | COPY_PHASE_STRIP = NO;
288 | CURRENT_PROJECT_VERSION = 1;
289 | DEBUG_INFORMATION_FORMAT = dwarf;
290 | DEFINES_MODULE = YES;
291 | DYLIB_COMPATIBILITY_VERSION = 1;
292 | DYLIB_CURRENT_VERSION = 1;
293 | DYLIB_INSTALL_NAME_BASE = "@rpath";
294 | ENABLE_STRICT_OBJC_MSGSEND = YES;
295 | ENABLE_TESTABILITY = YES;
296 | FRAMEWORK_VERSION = A;
297 | GCC_C_LANGUAGE_STANDARD = gnu99;
298 | GCC_DYNAMIC_NO_PIC = NO;
299 | GCC_NO_COMMON_BLOCKS = YES;
300 | GCC_OPTIMIZATION_LEVEL = 0;
301 | GCC_PREPROCESSOR_DEFINITIONS = (
302 | "DEBUG=1",
303 | "$(inherited)",
304 | );
305 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
306 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
307 | GCC_WARN_UNDECLARED_SELECTOR = YES;
308 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
309 | GCC_WARN_UNUSED_FUNCTION = YES;
310 | GCC_WARN_UNUSED_VARIABLE = YES;
311 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
312 | MACOSX_DEPLOYMENT_TARGET = 10.11;
313 | MTL_ENABLE_DEBUG_INFO = YES;
314 | SDKROOT = macosx;
315 | SKIP_INSTALL = YES;
316 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
317 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
318 | VERSIONING_SYSTEM = "apple-generic";
319 | VERSION_INFO_PREFIX = "";
320 | };
321 | name = Debug;
322 | };
323 | 658A7B701D776B7600F897C8 /* Release */ = {
324 | isa = XCBuildConfiguration;
325 | buildSettings = {
326 | ALWAYS_SEARCH_USER_PATHS = NO;
327 | CLANG_ANALYZER_NONNULL = YES;
328 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
329 | CLANG_CXX_LIBRARY = "libc++";
330 | CLANG_ENABLE_MODULES = YES;
331 | CLANG_ENABLE_OBJC_ARC = YES;
332 | CLANG_WARN_BOOL_CONVERSION = YES;
333 | CLANG_WARN_CONSTANT_CONVERSION = YES;
334 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
335 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
336 | CLANG_WARN_EMPTY_BODY = YES;
337 | CLANG_WARN_ENUM_CONVERSION = YES;
338 | CLANG_WARN_INFINITE_RECURSION = YES;
339 | CLANG_WARN_INT_CONVERSION = YES;
340 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
341 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
342 | CLANG_WARN_UNREACHABLE_CODE = YES;
343 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
344 | COMBINE_HIDPI_IMAGES = YES;
345 | COPY_PHASE_STRIP = NO;
346 | CURRENT_PROJECT_VERSION = 1;
347 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
348 | DEFINES_MODULE = YES;
349 | DYLIB_COMPATIBILITY_VERSION = 1;
350 | DYLIB_CURRENT_VERSION = 1;
351 | DYLIB_INSTALL_NAME_BASE = "@rpath";
352 | ENABLE_NS_ASSERTIONS = NO;
353 | ENABLE_STRICT_OBJC_MSGSEND = YES;
354 | FRAMEWORK_VERSION = A;
355 | GCC_C_LANGUAGE_STANDARD = gnu99;
356 | GCC_NO_COMMON_BLOCKS = YES;
357 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
358 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
359 | GCC_WARN_UNDECLARED_SELECTOR = YES;
360 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
361 | GCC_WARN_UNUSED_FUNCTION = YES;
362 | GCC_WARN_UNUSED_VARIABLE = YES;
363 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
364 | MACOSX_DEPLOYMENT_TARGET = 10.11;
365 | MTL_ENABLE_DEBUG_INFO = NO;
366 | SDKROOT = macosx;
367 | SKIP_INSTALL = YES;
368 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
369 | VERSIONING_SYSTEM = "apple-generic";
370 | VERSION_INFO_PREFIX = "";
371 | };
372 | name = Release;
373 | };
374 | 658A7B721D776B7600F897C8 /* Debug */ = {
375 | isa = XCBuildConfiguration;
376 | buildSettings = {
377 | ALWAYS_SEARCH_USER_PATHS = NO;
378 | CLANG_ANALYZER_NONNULL = YES;
379 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
380 | CLANG_CXX_LIBRARY = "libc++";
381 | CLANG_ENABLE_MODULES = YES;
382 | CLANG_ENABLE_OBJC_ARC = YES;
383 | CLANG_WARN_BOOL_CONVERSION = YES;
384 | CLANG_WARN_CONSTANT_CONVERSION = YES;
385 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
386 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
387 | CLANG_WARN_EMPTY_BODY = YES;
388 | CLANG_WARN_ENUM_CONVERSION = YES;
389 | CLANG_WARN_INFINITE_RECURSION = YES;
390 | CLANG_WARN_INT_CONVERSION = YES;
391 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
392 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
393 | CLANG_WARN_UNREACHABLE_CODE = YES;
394 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
395 | CODE_SIGN_IDENTITY = "-";
396 | COMBINE_HIDPI_IMAGES = YES;
397 | COPY_PHASE_STRIP = NO;
398 | DEBUG_INFORMATION_FORMAT = dwarf;
399 | ENABLE_STRICT_OBJC_MSGSEND = YES;
400 | ENABLE_TESTABILITY = YES;
401 | GCC_C_LANGUAGE_STANDARD = gnu99;
402 | GCC_DYNAMIC_NO_PIC = NO;
403 | GCC_NO_COMMON_BLOCKS = YES;
404 | GCC_OPTIMIZATION_LEVEL = 0;
405 | GCC_PREPROCESSOR_DEFINITIONS = (
406 | "DEBUG=1",
407 | "$(inherited)",
408 | );
409 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
410 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
411 | GCC_WARN_UNDECLARED_SELECTOR = YES;
412 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
413 | GCC_WARN_UNUSED_FUNCTION = YES;
414 | GCC_WARN_UNUSED_VARIABLE = YES;
415 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
416 | MTL_ENABLE_DEBUG_INFO = YES;
417 | SDKROOT = macosx;
418 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
419 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
420 | };
421 | name = Debug;
422 | };
423 | 658A7B731D776B7600F897C8 /* Release */ = {
424 | isa = XCBuildConfiguration;
425 | buildSettings = {
426 | ALWAYS_SEARCH_USER_PATHS = NO;
427 | CLANG_ANALYZER_NONNULL = YES;
428 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
429 | CLANG_CXX_LIBRARY = "libc++";
430 | CLANG_ENABLE_MODULES = YES;
431 | CLANG_ENABLE_OBJC_ARC = YES;
432 | CLANG_WARN_BOOL_CONVERSION = YES;
433 | CLANG_WARN_CONSTANT_CONVERSION = YES;
434 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
435 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
436 | CLANG_WARN_EMPTY_BODY = YES;
437 | CLANG_WARN_ENUM_CONVERSION = YES;
438 | CLANG_WARN_INFINITE_RECURSION = YES;
439 | CLANG_WARN_INT_CONVERSION = YES;
440 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
441 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
442 | CLANG_WARN_UNREACHABLE_CODE = YES;
443 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
444 | CODE_SIGN_IDENTITY = "-";
445 | COMBINE_HIDPI_IMAGES = YES;
446 | COPY_PHASE_STRIP = NO;
447 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
448 | ENABLE_NS_ASSERTIONS = NO;
449 | ENABLE_STRICT_OBJC_MSGSEND = YES;
450 | GCC_C_LANGUAGE_STANDARD = gnu99;
451 | GCC_NO_COMMON_BLOCKS = YES;
452 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
453 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
454 | GCC_WARN_UNDECLARED_SELECTOR = YES;
455 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
456 | GCC_WARN_UNUSED_FUNCTION = YES;
457 | GCC_WARN_UNUSED_VARIABLE = YES;
458 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
459 | MTL_ENABLE_DEBUG_INFO = NO;
460 | SDKROOT = macosx;
461 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
462 | };
463 | name = Release;
464 | };
465 | /* End XCBuildConfiguration section */
466 |
467 | /* Begin XCConfigurationList section */
468 | 658A7B541D776B4100F897C8 /* Build configuration list for PBXProject "ValueCoding" */ = {
469 | isa = XCConfigurationList;
470 | buildConfigurations = (
471 | 658A7B551D776B4100F897C8 /* Debug */,
472 | 658A7B561D776B4100F897C8 /* Release */,
473 | );
474 | defaultConfigurationIsVisible = 0;
475 | defaultConfigurationName = Release;
476 | };
477 | 658A7B6E1D776B7600F897C8 /* Build configuration list for PBXNativeTarget "ValueCoding" */ = {
478 | isa = XCConfigurationList;
479 | buildConfigurations = (
480 | 658A7B6F1D776B7600F897C8 /* Debug */,
481 | 658A7B701D776B7600F897C8 /* Release */,
482 | );
483 | defaultConfigurationIsVisible = 0;
484 | defaultConfigurationName = Release;
485 | };
486 | 658A7B711D776B7600F897C8 /* Build configuration list for PBXNativeTarget "ValueCodingTests" */ = {
487 | isa = XCConfigurationList;
488 | buildConfigurations = (
489 | 658A7B721D776B7600F897C8 /* Debug */,
490 | 658A7B731D776B7600F897C8 /* Release */,
491 | );
492 | defaultConfigurationIsVisible = 0;
493 | defaultConfigurationName = Release;
494 | };
495 | /* End XCConfigurationList section */
496 | };
497 | rootObject = 658A7B511D776B4100F897C8 /* Project object */;
498 | }
499 |
--------------------------------------------------------------------------------