├── .gitignore ├── Podfile ├── Podfile.lock ├── README.md ├── RxQuiz.app.dSYM.zip ├── RxQuiz.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── RxQuiz.xcworkspace └── contents.xcworkspacedata ├── RxQuiz ├── Additions │ ├── CollectionType+Additions.swift │ └── MutableColletionType+Additions.swift ├── AppDelegate.swift ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ └── Rx.png │ ├── Contents.json │ ├── after_Throttle.imageset │ │ ├── Contents.json │ │ └── after_Throttle.png │ ├── after_amb.imageset │ │ ├── Contents.json │ │ └── after_amb.png │ ├── after_combineLatest.imageset │ │ ├── Contents.json │ │ └── after_combineLatest.png │ ├── after_combineLatest2.imageset │ │ ├── Contents.json │ │ └── after_combineLatest2.png │ ├── after_concat.imageset │ │ ├── Contents.json │ │ └── after_concat.png │ ├── after_debounce.imageset │ │ ├── Contents.json │ │ └── after_debounce.png │ ├── after_delaySubscription.imageset │ │ ├── Contents.json │ │ └── after_delaySubscription.png │ ├── after_distinctUntilChanged.imageset │ │ ├── Contents.json │ │ └── after_distinctUntilChanged.png │ ├── after_elementAt.imageset │ │ ├── Contents.json │ │ └── after_elementAt.png │ ├── after_filter.imageset │ │ ├── Contents.json │ │ └── after_filter.png │ ├── after_findIndex.imageset │ │ ├── Contents.json │ │ └── after_findIndex.png │ ├── after_ignoreElements.imageset │ │ ├── Contents.json │ │ └── after_ignoreElements.png │ ├── after_just.imageset │ │ ├── Contents.json │ │ └── after_just.png │ ├── after_map.imageset │ │ ├── Contents.json │ │ └── after_map.png │ ├── after_merge.imageset │ │ ├── Contents.json │ │ └── after_merge.png │ ├── after_merge2.imageset │ │ ├── Contents.json │ │ └── after_merge2.png │ ├── after_reduce.imageset │ │ ├── Contents.json │ │ └── after_reduce.png │ ├── after_retry.imageset │ │ ├── Contents.json │ │ └── after_retry.png │ ├── after_sample.imageset │ │ ├── Contents.json │ │ └── after_sample.png │ ├── after_sample2.imageset │ │ ├── Contents.json │ │ └── after_sample2.png │ ├── after_scan.imageset │ │ ├── Contents.json │ │ └── after_scan.png │ ├── after_single.imageset │ │ ├── Contents.json │ │ └── after_single.png │ ├── after_skip.imageset │ │ ├── Contents.json │ │ └── after_skip.png │ ├── after_skipUntil.imageset │ │ ├── Contents.json │ │ └── after_skipUntil.png │ ├── after_skipWhile.imageset │ │ ├── Contents.json │ │ └── after_skipWhile.png │ ├── after_startWith.imageset │ │ ├── Contents.json │ │ └── after_startWith.png │ ├── after_switchLatest.imageset │ │ ├── Contents.json │ │ └── after_switchLatest.png │ ├── after_take.imageset │ │ ├── Contents.json │ │ └── after_take.png │ ├── after_takeLast.imageset │ │ ├── Contents.json │ │ └── after_takeLast.png │ ├── after_takeUntil.imageset │ │ ├── Contents.json │ │ └── after_takeUntil.png │ ├── after_takeWhile.imageset │ │ ├── Contents.json │ │ └── after_takeWhile.png │ ├── after_takeWhileWithIndex.imageset │ │ ├── Contents.json │ │ └── after_takeWhileWithIndex.png │ ├── after_toArray.imageset │ │ ├── Contents.json │ │ └── after_toArray.png │ ├── after_withLatestFrom.imageset │ │ ├── Contents.json │ │ └── after_withLatestFrom.png │ ├── after_zip.imageset │ │ ├── Contents.json │ │ └── after_zip.png │ ├── before_Throttle.imageset │ │ ├── Contents.json │ │ └── before_Throttle.png │ ├── before_amb.imageset │ │ ├── Contents.json │ │ └── before_amb.png │ ├── before_combineLatest.imageset │ │ ├── Contents.json │ │ └── before_combineLatest.png │ ├── before_combineLatest2.imageset │ │ ├── Contents.json │ │ └── before_combineLatest2.png │ ├── before_concat.imageset │ │ ├── Contents.json │ │ └── before_concat.png │ ├── before_debounce.imageset │ │ ├── Contents.json │ │ └── before_debounce.png │ ├── before_delaySubscription.imageset │ │ ├── Contents.json │ │ └── before_delaySubscription.png │ ├── before_distinctUntilChanged.imageset │ │ ├── Contents.json │ │ └── before_distinctUntilChanged.png │ ├── before_elementAt.imageset │ │ ├── Contents.json │ │ └── before_elementAt.png │ ├── before_filter.imageset │ │ ├── Contents.json │ │ └── before_filter.png │ ├── before_findIndex.imageset │ │ ├── Contents.json │ │ └── before_findIndex.png │ ├── before_ignoreElements.imageset │ │ ├── Contents.json │ │ └── before_ignoreElements.png │ ├── before_map.imageset │ │ ├── Contents.json │ │ └── before_map.png │ ├── before_merge.imageset │ │ ├── Contents.json │ │ └── before_merge.png │ ├── before_merge2.imageset │ │ ├── Contents.json │ │ └── before_merge2.png │ ├── before_reduce.imageset │ │ ├── Contents.json │ │ └── before_reduce.png │ ├── before_retry.imageset │ │ ├── Contents.json │ │ └── before_retry.png │ ├── before_sample.imageset │ │ ├── Contents.json │ │ └── before_sample.png │ ├── before_sample2.imageset │ │ ├── Contents.json │ │ └── before_sample2.png │ ├── before_scan.imageset │ │ ├── Contents.json │ │ └── before_scan.png │ ├── before_single.imageset │ │ ├── Contents.json │ │ └── before_single.png │ ├── before_skip.imageset │ │ ├── Contents.json │ │ └── before_skip.png │ ├── before_skipUntil.imageset │ │ ├── Contents.json │ │ └── before_skipUntil.png │ ├── before_skipWhile.imageset │ │ ├── Contents.json │ │ └── before_skipWhile.png │ ├── before_startWith.imageset │ │ ├── Contents.json │ │ └── before_startWith.png │ ├── before_switchLatest.imageset │ │ ├── Contents.json │ │ └── before_switchLatest.png │ ├── before_take.imageset │ │ ├── Contents.json │ │ └── before_take.png │ ├── before_takeLast.imageset │ │ ├── Contents.json │ │ └── before_takeLast.png │ ├── before_takeUntil.imageset │ │ ├── Contents.json │ │ └── before_takeUntil.png │ ├── before_takeWhile.imageset │ │ ├── Contents.json │ │ └── before_takeWhile.png │ ├── before_takeWhileWithIndex.imageset │ │ ├── Contents.json │ │ └── before_takeWhileWithIndex.png │ ├── before_toArray.imageset │ │ ├── Contents.json │ │ └── before_toArray.png │ ├── before_withLatestFrom.imageset │ │ ├── Contents.json │ │ └── before_withLatestFrom.png │ └── before_zip.imageset │ │ ├── Contents.json │ │ └── before_zip.png ├── Base.lproj │ └── LaunchScreen.storyboard ├── Info.plist ├── JSON │ └── Quiz.json ├── Model │ └── Question.swift ├── Sound │ ├── correct.mp3 │ └── incorrect.mp3 ├── Storyboard │ ├── Base.lproj │ │ └── Main.storyboard │ └── Quiz.storyboard └── ViewController │ ├── QuizViewController.swift │ └── ViewController.swift ├── RxQuizTests ├── Info.plist └── RxQuizTests.swift └── RxQuizUITests ├── Info.plist ├── RxQuizUITests.swift └── SnapshotHelper.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io 2 | 3 | ### Swift ### 4 | # Xcode 5 | # 6 | build/ 7 | *.pbxuser 8 | !default.pbxuser 9 | *.mode1v3 10 | !default.mode1v3 11 | *.mode2v3 12 | !default.mode2v3 13 | *.perspectivev3 14 | !default.perspectivev3 15 | xcuserdata 16 | *.xccheckout 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | *.xcuserstate 22 | 23 | # CocoaPods 24 | # 25 | # We recommend against adding the Pods directory to your .gitignore. However 26 | # you should judge for yourself, the pros and cons are mentioned at: 27 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 28 | # 29 | Pods/ 30 | 31 | # Carthage 32 | # 33 | Carthage/Checkouts 34 | Carthage/Build 35 | 36 | ### Mac ### 37 | .DS_Store 38 | 39 | ### fastlane ### 40 | fastlane/ 41 | Moonside.app.dSYM.zip 42 | Preview.html 43 | *.mobileprovision 44 | screenshots/ 45 | 46 | ### jazzy ### 47 | jazzy/doc 48 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '8.0' 2 | use_frameworks! 3 | target 'RxQuiz' do 4 | pod 'RxSwift', '~> 2.3.1' 5 | pod 'RxCocoa', '~> 2.3.1' 6 | pod 'Argo' 7 | pod 'Curry' 8 | end 9 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Argo (3.0.1) 3 | - Curry (2.2.0) 4 | - RxCocoa (2.3.1): 5 | - RxSwift (~> 2.3.1) 6 | - RxSwift (2.3.1) 7 | 8 | DEPENDENCIES: 9 | - Argo 10 | - Curry 11 | - RxCocoa (~> 2.3.1) 12 | - RxSwift (~> 2.3.1) 13 | 14 | SPEC CHECKSUMS: 15 | Argo: 22c5d62b7967020a641468c91dc9488bea9523b8 16 | Curry: c22d80fff7f5a4b1bbd531455c3e2dbb099658a3 17 | RxCocoa: a2baaf3462b989559a51dce59d78fbebb8fe0afa 18 | RxSwift: 829b2843e9eddc77a02cb3f5117f0d55f8f646f1 19 | 20 | COCOAPODS: 0.39.0 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RxQuiz 2 | 3 | - pod install 4 | - open RxQuiz.xcworkspace 5 | 6 | enjoy!!! 7 | -------------------------------------------------------------------------------- /RxQuiz.app.dSYM.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz.app.dSYM.zip -------------------------------------------------------------------------------- /RxQuiz.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1043314FE8AA99F7339DB116 /* Pods_RxQuiz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7DE60116E6CFAAE41A89FBA /* Pods_RxQuiz.framework */; }; 11 | 844036E91CD7FB35009EAD96 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844036E81CD7FB35009EAD96 /* SnapshotHelper.swift */; }; 12 | 84B440011CB96CFE00AD1A23 /* correct.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 84B43FFF1CB96CFE00AD1A23 /* correct.mp3 */; }; 13 | 84B440021CB96CFE00AD1A23 /* incorrect.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 84B440001CB96CFE00AD1A23 /* incorrect.mp3 */; }; 14 | D4B3A20A1CAD09350075AB4C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A2091CAD09350075AB4C /* AppDelegate.swift */; }; 15 | D4B3A20C1CAD09350075AB4C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A20B1CAD09350075AB4C /* ViewController.swift */; }; 16 | D4B3A20F1CAD09350075AB4C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D4B3A20D1CAD09350075AB4C /* Main.storyboard */; }; 17 | D4B3A2111CAD09350075AB4C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D4B3A2101CAD09350075AB4C /* Assets.xcassets */; }; 18 | D4B3A2141CAD09350075AB4C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D4B3A2121CAD09350075AB4C /* LaunchScreen.storyboard */; }; 19 | D4B3A21F1CAD09360075AB4C /* RxQuizTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A21E1CAD09360075AB4C /* RxQuizTests.swift */; }; 20 | D4B3A22A1CAD09360075AB4C /* RxQuizUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A2291CAD09360075AB4C /* RxQuizUITests.swift */; }; 21 | D4B3A2471CAD26360075AB4C /* QuizViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A2461CAD26360075AB4C /* QuizViewController.swift */; }; 22 | D4B3A2491CAD26480075AB4C /* Quiz.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D4B3A2481CAD26480075AB4C /* Quiz.storyboard */; }; 23 | D4B3A24E1CAD61710075AB4C /* CollectionType+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A24D1CAD61710075AB4C /* CollectionType+Additions.swift */; }; 24 | D4B3A2501CAD61880075AB4C /* MutableColletionType+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A24F1CAD61880075AB4C /* MutableColletionType+Additions.swift */; }; 25 | D4B3A2521CAD61A10075AB4C /* Question.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B3A2511CAD61A10075AB4C /* Question.swift */; }; 26 | D4B3A2541CAE3EE30075AB4C /* Quiz.json in Resources */ = {isa = PBXBuildFile; fileRef = D4B3A2531CAE3EE30075AB4C /* Quiz.json */; }; 27 | /* End PBXBuildFile section */ 28 | 29 | /* Begin PBXContainerItemProxy section */ 30 | D4B3A21B1CAD09360075AB4C /* PBXContainerItemProxy */ = { 31 | isa = PBXContainerItemProxy; 32 | containerPortal = D4B3A1FE1CAD09350075AB4C /* Project object */; 33 | proxyType = 1; 34 | remoteGlobalIDString = D4B3A2051CAD09350075AB4C; 35 | remoteInfo = RxQuiz; 36 | }; 37 | D4B3A2261CAD09360075AB4C /* PBXContainerItemProxy */ = { 38 | isa = PBXContainerItemProxy; 39 | containerPortal = D4B3A1FE1CAD09350075AB4C /* Project object */; 40 | proxyType = 1; 41 | remoteGlobalIDString = D4B3A2051CAD09350075AB4C; 42 | remoteInfo = RxQuiz; 43 | }; 44 | /* End PBXContainerItemProxy section */ 45 | 46 | /* Begin PBXCopyFilesBuildPhase section */ 47 | D4B3A2431CAD12890075AB4C /* Embed Frameworks */ = { 48 | isa = PBXCopyFilesBuildPhase; 49 | buildActionMask = 2147483647; 50 | dstPath = ""; 51 | dstSubfolderSpec = 10; 52 | files = ( 53 | ); 54 | name = "Embed Frameworks"; 55 | runOnlyForDeploymentPostprocessing = 0; 56 | }; 57 | /* End PBXCopyFilesBuildPhase section */ 58 | 59 | /* Begin PBXFileReference section */ 60 | 404286BEF88AC504F9A800A0 /* Pods-RxQuiz.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxQuiz.release.xcconfig"; path = "Pods/Target Support Files/Pods-RxQuiz/Pods-RxQuiz.release.xcconfig"; sourceTree = ""; }; 61 | 6A52DF9E9A2FFA3809872FE1 /* Pods-RxQuiz.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxQuiz.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RxQuiz/Pods-RxQuiz.debug.xcconfig"; sourceTree = ""; }; 62 | 844036E81CD7FB35009EAD96 /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = ""; }; 63 | 84B43FFF1CB96CFE00AD1A23 /* correct.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = correct.mp3; sourceTree = ""; }; 64 | 84B440001CB96CFE00AD1A23 /* incorrect.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = incorrect.mp3; sourceTree = ""; }; 65 | D4B3A2061CAD09350075AB4C /* RxQuiz.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RxQuiz.app; sourceTree = BUILT_PRODUCTS_DIR; }; 66 | D4B3A2091CAD09350075AB4C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 67 | D4B3A20B1CAD09350075AB4C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 68 | D4B3A20E1CAD09350075AB4C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 69 | D4B3A2101CAD09350075AB4C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 70 | D4B3A2131CAD09350075AB4C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 71 | D4B3A2151CAD09350075AB4C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 72 | D4B3A21A1CAD09360075AB4C /* RxQuizTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RxQuizTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 73 | D4B3A21E1CAD09360075AB4C /* RxQuizTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxQuizTests.swift; sourceTree = ""; }; 74 | D4B3A2201CAD09360075AB4C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 75 | D4B3A2251CAD09360075AB4C /* RxQuizUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RxQuizUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 76 | D4B3A2291CAD09360075AB4C /* RxQuizUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxQuizUITests.swift; sourceTree = ""; }; 77 | D4B3A22B1CAD09360075AB4C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 78 | D4B3A2461CAD26360075AB4C /* QuizViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuizViewController.swift; sourceTree = ""; }; 79 | D4B3A2481CAD26480075AB4C /* Quiz.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Quiz.storyboard; sourceTree = ""; }; 80 | D4B3A24D1CAD61710075AB4C /* CollectionType+Additions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CollectionType+Additions.swift"; sourceTree = ""; }; 81 | D4B3A24F1CAD61880075AB4C /* MutableColletionType+Additions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MutableColletionType+Additions.swift"; sourceTree = ""; }; 82 | D4B3A2511CAD61A10075AB4C /* Question.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Question.swift; sourceTree = ""; }; 83 | D4B3A2531CAE3EE30075AB4C /* Quiz.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Quiz.json; sourceTree = ""; }; 84 | F7DE60116E6CFAAE41A89FBA /* Pods_RxQuiz.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RxQuiz.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 85 | /* End PBXFileReference section */ 86 | 87 | /* Begin PBXFrameworksBuildPhase section */ 88 | D4B3A2031CAD09350075AB4C /* Frameworks */ = { 89 | isa = PBXFrameworksBuildPhase; 90 | buildActionMask = 2147483647; 91 | files = ( 92 | 1043314FE8AA99F7339DB116 /* Pods_RxQuiz.framework in Frameworks */, 93 | ); 94 | runOnlyForDeploymentPostprocessing = 0; 95 | }; 96 | D4B3A2171CAD09360075AB4C /* Frameworks */ = { 97 | isa = PBXFrameworksBuildPhase; 98 | buildActionMask = 2147483647; 99 | files = ( 100 | ); 101 | runOnlyForDeploymentPostprocessing = 0; 102 | }; 103 | D4B3A2221CAD09360075AB4C /* Frameworks */ = { 104 | isa = PBXFrameworksBuildPhase; 105 | buildActionMask = 2147483647; 106 | files = ( 107 | ); 108 | runOnlyForDeploymentPostprocessing = 0; 109 | }; 110 | /* End PBXFrameworksBuildPhase section */ 111 | 112 | /* Begin PBXGroup section */ 113 | 84B43FFA1CB6E76100AD1A23 /* ViewController */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | D4B3A2461CAD26360075AB4C /* QuizViewController.swift */, 117 | D4B3A20B1CAD09350075AB4C /* ViewController.swift */, 118 | ); 119 | path = ViewController; 120 | sourceTree = ""; 121 | }; 122 | 84B43FFB1CB6E76E00AD1A23 /* Storyboard */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | D4B3A20D1CAD09350075AB4C /* Main.storyboard */, 126 | D4B3A2481CAD26480075AB4C /* Quiz.storyboard */, 127 | ); 128 | path = Storyboard; 129 | sourceTree = ""; 130 | }; 131 | 84B43FFC1CB6E78B00AD1A23 /* Additions */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | D4B3A24D1CAD61710075AB4C /* CollectionType+Additions.swift */, 135 | D4B3A24F1CAD61880075AB4C /* MutableColletionType+Additions.swift */, 136 | ); 137 | path = Additions; 138 | sourceTree = ""; 139 | }; 140 | 84B43FFD1CB6E79A00AD1A23 /* Model */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | D4B3A2511CAD61A10075AB4C /* Question.swift */, 144 | ); 145 | path = Model; 146 | sourceTree = ""; 147 | }; 148 | 84B43FFE1CB96CF100AD1A23 /* Sound */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 84B43FFF1CB96CFE00AD1A23 /* correct.mp3 */, 152 | 84B440001CB96CFE00AD1A23 /* incorrect.mp3 */, 153 | ); 154 | path = Sound; 155 | sourceTree = ""; 156 | }; 157 | 8B833C239D97313BACE345F1 /* Pods */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | 6A52DF9E9A2FFA3809872FE1 /* Pods-RxQuiz.debug.xcconfig */, 161 | 404286BEF88AC504F9A800A0 /* Pods-RxQuiz.release.xcconfig */, 162 | ); 163 | name = Pods; 164 | sourceTree = ""; 165 | }; 166 | A6E514A515CF6D55DCCD30D0 /* Frameworks */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | F7DE60116E6CFAAE41A89FBA /* Pods_RxQuiz.framework */, 170 | ); 171 | name = Frameworks; 172 | sourceTree = ""; 173 | }; 174 | D4B3A1FD1CAD09350075AB4C = { 175 | isa = PBXGroup; 176 | children = ( 177 | A6E514A515CF6D55DCCD30D0 /* Frameworks */, 178 | 8B833C239D97313BACE345F1 /* Pods */, 179 | D4B3A2071CAD09350075AB4C /* Products */, 180 | D4B3A2081CAD09350075AB4C /* RxQuiz */, 181 | D4B3A21D1CAD09360075AB4C /* RxQuizTests */, 182 | D4B3A2281CAD09360075AB4C /* RxQuizUITests */, 183 | ); 184 | sourceTree = ""; 185 | }; 186 | D4B3A2071CAD09350075AB4C /* Products */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | D4B3A2061CAD09350075AB4C /* RxQuiz.app */, 190 | D4B3A21A1CAD09360075AB4C /* RxQuizTests.xctest */, 191 | D4B3A2251CAD09360075AB4C /* RxQuizUITests.xctest */, 192 | ); 193 | name = Products; 194 | sourceTree = ""; 195 | }; 196 | D4B3A2081CAD09350075AB4C /* RxQuiz */ = { 197 | isa = PBXGroup; 198 | children = ( 199 | 84B43FFC1CB6E78B00AD1A23 /* Additions */, 200 | D4B3A24A1CAD2E2A0075AB4C /* JSON */, 201 | 84B43FFD1CB6E79A00AD1A23 /* Model */, 202 | 84B43FFE1CB96CF100AD1A23 /* Sound */, 203 | 84B43FFB1CB6E76E00AD1A23 /* Storyboard */, 204 | 84B43FFA1CB6E76100AD1A23 /* ViewController */, 205 | D4B3A2091CAD09350075AB4C /* AppDelegate.swift */, 206 | D4B3A2101CAD09350075AB4C /* Assets.xcassets */, 207 | D4B3A2151CAD09350075AB4C /* Info.plist */, 208 | D4B3A2121CAD09350075AB4C /* LaunchScreen.storyboard */, 209 | ); 210 | path = RxQuiz; 211 | sourceTree = ""; 212 | }; 213 | D4B3A21D1CAD09360075AB4C /* RxQuizTests */ = { 214 | isa = PBXGroup; 215 | children = ( 216 | D4B3A2201CAD09360075AB4C /* Info.plist */, 217 | D4B3A21E1CAD09360075AB4C /* RxQuizTests.swift */, 218 | ); 219 | path = RxQuizTests; 220 | sourceTree = ""; 221 | }; 222 | D4B3A2281CAD09360075AB4C /* RxQuizUITests */ = { 223 | isa = PBXGroup; 224 | children = ( 225 | D4B3A22B1CAD09360075AB4C /* Info.plist */, 226 | 844036E81CD7FB35009EAD96 /* SnapshotHelper.swift */, 227 | D4B3A2291CAD09360075AB4C /* RxQuizUITests.swift */, 228 | ); 229 | path = RxQuizUITests; 230 | sourceTree = ""; 231 | }; 232 | D4B3A24A1CAD2E2A0075AB4C /* JSON */ = { 233 | isa = PBXGroup; 234 | children = ( 235 | D4B3A2531CAE3EE30075AB4C /* Quiz.json */, 236 | ); 237 | path = JSON; 238 | sourceTree = ""; 239 | }; 240 | /* End PBXGroup section */ 241 | 242 | /* Begin PBXNativeTarget section */ 243 | D4B3A2051CAD09350075AB4C /* RxQuiz */ = { 244 | isa = PBXNativeTarget; 245 | buildConfigurationList = D4B3A22E1CAD09360075AB4C /* Build configuration list for PBXNativeTarget "RxQuiz" */; 246 | buildPhases = ( 247 | 39AA6E36FC9ABA1CAD631A02 /* Check Pods Manifest.lock */, 248 | D4B3A2021CAD09350075AB4C /* Sources */, 249 | D4B3A2031CAD09350075AB4C /* Frameworks */, 250 | D4B3A2041CAD09350075AB4C /* Resources */, 251 | D4B3A2431CAD12890075AB4C /* Embed Frameworks */, 252 | D4B3A2451CAD129D0075AB4C /* ShellScript */, 253 | 2E8D5325C5A929548DE7D912 /* Embed Pods Frameworks */, 254 | 0315DD8DED008D8893AC2E37 /* Copy Pods Resources */, 255 | ); 256 | buildRules = ( 257 | ); 258 | dependencies = ( 259 | ); 260 | name = RxQuiz; 261 | productName = RxQuiz; 262 | productReference = D4B3A2061CAD09350075AB4C /* RxQuiz.app */; 263 | productType = "com.apple.product-type.application"; 264 | }; 265 | D4B3A2191CAD09360075AB4C /* RxQuizTests */ = { 266 | isa = PBXNativeTarget; 267 | buildConfigurationList = D4B3A2311CAD09360075AB4C /* Build configuration list for PBXNativeTarget "RxQuizTests" */; 268 | buildPhases = ( 269 | D4B3A2161CAD09360075AB4C /* Sources */, 270 | D4B3A2171CAD09360075AB4C /* Frameworks */, 271 | D4B3A2181CAD09360075AB4C /* Resources */, 272 | ); 273 | buildRules = ( 274 | ); 275 | dependencies = ( 276 | D4B3A21C1CAD09360075AB4C /* PBXTargetDependency */, 277 | ); 278 | name = RxQuizTests; 279 | productName = RxQuizTests; 280 | productReference = D4B3A21A1CAD09360075AB4C /* RxQuizTests.xctest */; 281 | productType = "com.apple.product-type.bundle.unit-test"; 282 | }; 283 | D4B3A2241CAD09360075AB4C /* RxQuizUITests */ = { 284 | isa = PBXNativeTarget; 285 | buildConfigurationList = D4B3A2341CAD09360075AB4C /* Build configuration list for PBXNativeTarget "RxQuizUITests" */; 286 | buildPhases = ( 287 | D4B3A2211CAD09360075AB4C /* Sources */, 288 | D4B3A2221CAD09360075AB4C /* Frameworks */, 289 | D4B3A2231CAD09360075AB4C /* Resources */, 290 | ); 291 | buildRules = ( 292 | ); 293 | dependencies = ( 294 | D4B3A2271CAD09360075AB4C /* PBXTargetDependency */, 295 | ); 296 | name = RxQuizUITests; 297 | productName = RxQuizUITests; 298 | productReference = D4B3A2251CAD09360075AB4C /* RxQuizUITests.xctest */; 299 | productType = "com.apple.product-type.bundle.ui-testing"; 300 | }; 301 | /* End PBXNativeTarget section */ 302 | 303 | /* Begin PBXProject section */ 304 | D4B3A1FE1CAD09350075AB4C /* Project object */ = { 305 | isa = PBXProject; 306 | attributes = { 307 | LastSwiftUpdateCheck = 0730; 308 | LastUpgradeCheck = 0730; 309 | ORGANIZATIONNAME = nakazy; 310 | TargetAttributes = { 311 | D4B3A2051CAD09350075AB4C = { 312 | CreatedOnToolsVersion = 7.3; 313 | DevelopmentTeam = GGWT95G6NK; 314 | }; 315 | D4B3A2191CAD09360075AB4C = { 316 | CreatedOnToolsVersion = 7.3; 317 | TestTargetID = D4B3A2051CAD09350075AB4C; 318 | }; 319 | D4B3A2241CAD09360075AB4C = { 320 | CreatedOnToolsVersion = 7.3; 321 | TestTargetID = D4B3A2051CAD09350075AB4C; 322 | }; 323 | }; 324 | }; 325 | buildConfigurationList = D4B3A2011CAD09350075AB4C /* Build configuration list for PBXProject "RxQuiz" */; 326 | compatibilityVersion = "Xcode 3.2"; 327 | developmentRegion = English; 328 | hasScannedForEncodings = 0; 329 | knownRegions = ( 330 | en, 331 | Base, 332 | ); 333 | mainGroup = D4B3A1FD1CAD09350075AB4C; 334 | productRefGroup = D4B3A2071CAD09350075AB4C /* Products */; 335 | projectDirPath = ""; 336 | projectRoot = ""; 337 | targets = ( 338 | D4B3A2051CAD09350075AB4C /* RxQuiz */, 339 | D4B3A2191CAD09360075AB4C /* RxQuizTests */, 340 | D4B3A2241CAD09360075AB4C /* RxQuizUITests */, 341 | ); 342 | }; 343 | /* End PBXProject section */ 344 | 345 | /* Begin PBXResourcesBuildPhase section */ 346 | D4B3A2041CAD09350075AB4C /* Resources */ = { 347 | isa = PBXResourcesBuildPhase; 348 | buildActionMask = 2147483647; 349 | files = ( 350 | D4B3A2141CAD09350075AB4C /* LaunchScreen.storyboard in Resources */, 351 | 84B440021CB96CFE00AD1A23 /* incorrect.mp3 in Resources */, 352 | D4B3A2111CAD09350075AB4C /* Assets.xcassets in Resources */, 353 | D4B3A20F1CAD09350075AB4C /* Main.storyboard in Resources */, 354 | D4B3A2541CAE3EE30075AB4C /* Quiz.json in Resources */, 355 | D4B3A2491CAD26480075AB4C /* Quiz.storyboard in Resources */, 356 | 84B440011CB96CFE00AD1A23 /* correct.mp3 in Resources */, 357 | ); 358 | runOnlyForDeploymentPostprocessing = 0; 359 | }; 360 | D4B3A2181CAD09360075AB4C /* Resources */ = { 361 | isa = PBXResourcesBuildPhase; 362 | buildActionMask = 2147483647; 363 | files = ( 364 | ); 365 | runOnlyForDeploymentPostprocessing = 0; 366 | }; 367 | D4B3A2231CAD09360075AB4C /* Resources */ = { 368 | isa = PBXResourcesBuildPhase; 369 | buildActionMask = 2147483647; 370 | files = ( 371 | ); 372 | runOnlyForDeploymentPostprocessing = 0; 373 | }; 374 | /* End PBXResourcesBuildPhase section */ 375 | 376 | /* Begin PBXShellScriptBuildPhase section */ 377 | 0315DD8DED008D8893AC2E37 /* Copy Pods Resources */ = { 378 | isa = PBXShellScriptBuildPhase; 379 | buildActionMask = 2147483647; 380 | files = ( 381 | ); 382 | inputPaths = ( 383 | ); 384 | name = "Copy Pods Resources"; 385 | outputPaths = ( 386 | ); 387 | runOnlyForDeploymentPostprocessing = 0; 388 | shellPath = /bin/sh; 389 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RxQuiz/Pods-RxQuiz-resources.sh\"\n"; 390 | showEnvVarsInLog = 0; 391 | }; 392 | 2E8D5325C5A929548DE7D912 /* Embed Pods Frameworks */ = { 393 | isa = PBXShellScriptBuildPhase; 394 | buildActionMask = 2147483647; 395 | files = ( 396 | ); 397 | inputPaths = ( 398 | ); 399 | name = "Embed Pods Frameworks"; 400 | outputPaths = ( 401 | ); 402 | runOnlyForDeploymentPostprocessing = 0; 403 | shellPath = /bin/sh; 404 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RxQuiz/Pods-RxQuiz-frameworks.sh\"\n"; 405 | showEnvVarsInLog = 0; 406 | }; 407 | 39AA6E36FC9ABA1CAD631A02 /* Check Pods Manifest.lock */ = { 408 | isa = PBXShellScriptBuildPhase; 409 | buildActionMask = 2147483647; 410 | files = ( 411 | ); 412 | inputPaths = ( 413 | ); 414 | name = "Check Pods Manifest.lock"; 415 | outputPaths = ( 416 | ); 417 | runOnlyForDeploymentPostprocessing = 0; 418 | shellPath = /bin/sh; 419 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 420 | showEnvVarsInLog = 0; 421 | }; 422 | D4B3A2451CAD129D0075AB4C /* ShellScript */ = { 423 | isa = PBXShellScriptBuildPhase; 424 | buildActionMask = 2147483647; 425 | files = ( 426 | ); 427 | inputPaths = ( 428 | ); 429 | outputPaths = ( 430 | ); 431 | runOnlyForDeploymentPostprocessing = 0; 432 | shellPath = /bin/sh; 433 | shellScript = ""; 434 | }; 435 | /* End PBXShellScriptBuildPhase section */ 436 | 437 | /* Begin PBXSourcesBuildPhase section */ 438 | D4B3A2021CAD09350075AB4C /* Sources */ = { 439 | isa = PBXSourcesBuildPhase; 440 | buildActionMask = 2147483647; 441 | files = ( 442 | D4B3A2471CAD26360075AB4C /* QuizViewController.swift in Sources */, 443 | D4B3A2501CAD61880075AB4C /* MutableColletionType+Additions.swift in Sources */, 444 | D4B3A24E1CAD61710075AB4C /* CollectionType+Additions.swift in Sources */, 445 | D4B3A2521CAD61A10075AB4C /* Question.swift in Sources */, 446 | D4B3A20C1CAD09350075AB4C /* ViewController.swift in Sources */, 447 | D4B3A20A1CAD09350075AB4C /* AppDelegate.swift in Sources */, 448 | ); 449 | runOnlyForDeploymentPostprocessing = 0; 450 | }; 451 | D4B3A2161CAD09360075AB4C /* Sources */ = { 452 | isa = PBXSourcesBuildPhase; 453 | buildActionMask = 2147483647; 454 | files = ( 455 | D4B3A21F1CAD09360075AB4C /* RxQuizTests.swift in Sources */, 456 | ); 457 | runOnlyForDeploymentPostprocessing = 0; 458 | }; 459 | D4B3A2211CAD09360075AB4C /* Sources */ = { 460 | isa = PBXSourcesBuildPhase; 461 | buildActionMask = 2147483647; 462 | files = ( 463 | D4B3A22A1CAD09360075AB4C /* RxQuizUITests.swift in Sources */, 464 | 844036E91CD7FB35009EAD96 /* SnapshotHelper.swift in Sources */, 465 | ); 466 | runOnlyForDeploymentPostprocessing = 0; 467 | }; 468 | /* End PBXSourcesBuildPhase section */ 469 | 470 | /* Begin PBXTargetDependency section */ 471 | D4B3A21C1CAD09360075AB4C /* PBXTargetDependency */ = { 472 | isa = PBXTargetDependency; 473 | target = D4B3A2051CAD09350075AB4C /* RxQuiz */; 474 | targetProxy = D4B3A21B1CAD09360075AB4C /* PBXContainerItemProxy */; 475 | }; 476 | D4B3A2271CAD09360075AB4C /* PBXTargetDependency */ = { 477 | isa = PBXTargetDependency; 478 | target = D4B3A2051CAD09350075AB4C /* RxQuiz */; 479 | targetProxy = D4B3A2261CAD09360075AB4C /* PBXContainerItemProxy */; 480 | }; 481 | /* End PBXTargetDependency section */ 482 | 483 | /* Begin PBXVariantGroup section */ 484 | D4B3A20D1CAD09350075AB4C /* Main.storyboard */ = { 485 | isa = PBXVariantGroup; 486 | children = ( 487 | D4B3A20E1CAD09350075AB4C /* Base */, 488 | ); 489 | name = Main.storyboard; 490 | path = .; 491 | sourceTree = ""; 492 | }; 493 | D4B3A2121CAD09350075AB4C /* LaunchScreen.storyboard */ = { 494 | isa = PBXVariantGroup; 495 | children = ( 496 | D4B3A2131CAD09350075AB4C /* Base */, 497 | ); 498 | name = LaunchScreen.storyboard; 499 | path = .; 500 | sourceTree = ""; 501 | }; 502 | /* End PBXVariantGroup section */ 503 | 504 | /* Begin XCBuildConfiguration section */ 505 | D4B3A22C1CAD09360075AB4C /* Debug */ = { 506 | isa = XCBuildConfiguration; 507 | buildSettings = { 508 | ALWAYS_SEARCH_USER_PATHS = NO; 509 | CLANG_ANALYZER_NONNULL = YES; 510 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 511 | CLANG_CXX_LIBRARY = "libc++"; 512 | CLANG_ENABLE_MODULES = YES; 513 | CLANG_ENABLE_OBJC_ARC = YES; 514 | CLANG_WARN_BOOL_CONVERSION = YES; 515 | CLANG_WARN_CONSTANT_CONVERSION = YES; 516 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 517 | CLANG_WARN_EMPTY_BODY = YES; 518 | CLANG_WARN_ENUM_CONVERSION = YES; 519 | CLANG_WARN_INT_CONVERSION = YES; 520 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 521 | CLANG_WARN_UNREACHABLE_CODE = YES; 522 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 523 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 524 | COPY_PHASE_STRIP = NO; 525 | DEBUG_INFORMATION_FORMAT = dwarf; 526 | ENABLE_STRICT_OBJC_MSGSEND = YES; 527 | ENABLE_TESTABILITY = YES; 528 | GCC_C_LANGUAGE_STANDARD = gnu99; 529 | GCC_DYNAMIC_NO_PIC = NO; 530 | GCC_NO_COMMON_BLOCKS = YES; 531 | GCC_OPTIMIZATION_LEVEL = 0; 532 | GCC_PREPROCESSOR_DEFINITIONS = ( 533 | "DEBUG=1", 534 | "$(inherited)", 535 | ); 536 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 537 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 538 | GCC_WARN_UNDECLARED_SELECTOR = YES; 539 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 540 | GCC_WARN_UNUSED_FUNCTION = YES; 541 | GCC_WARN_UNUSED_VARIABLE = YES; 542 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 543 | MTL_ENABLE_DEBUG_INFO = YES; 544 | ONLY_ACTIVE_ARCH = YES; 545 | SDKROOT = iphoneos; 546 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 547 | TARGETED_DEVICE_FAMILY = "1,2"; 548 | }; 549 | name = Debug; 550 | }; 551 | D4B3A22D1CAD09360075AB4C /* Release */ = { 552 | isa = XCBuildConfiguration; 553 | buildSettings = { 554 | ALWAYS_SEARCH_USER_PATHS = NO; 555 | CLANG_ANALYZER_NONNULL = YES; 556 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 557 | CLANG_CXX_LIBRARY = "libc++"; 558 | CLANG_ENABLE_MODULES = YES; 559 | CLANG_ENABLE_OBJC_ARC = YES; 560 | CLANG_WARN_BOOL_CONVERSION = YES; 561 | CLANG_WARN_CONSTANT_CONVERSION = YES; 562 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 563 | CLANG_WARN_EMPTY_BODY = YES; 564 | CLANG_WARN_ENUM_CONVERSION = YES; 565 | CLANG_WARN_INT_CONVERSION = YES; 566 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 567 | CLANG_WARN_UNREACHABLE_CODE = YES; 568 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 569 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 570 | COPY_PHASE_STRIP = NO; 571 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 572 | ENABLE_NS_ASSERTIONS = NO; 573 | ENABLE_STRICT_OBJC_MSGSEND = YES; 574 | GCC_C_LANGUAGE_STANDARD = gnu99; 575 | GCC_NO_COMMON_BLOCKS = YES; 576 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 577 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 578 | GCC_WARN_UNDECLARED_SELECTOR = YES; 579 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 580 | GCC_WARN_UNUSED_FUNCTION = YES; 581 | GCC_WARN_UNUSED_VARIABLE = YES; 582 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 583 | MTL_ENABLE_DEBUG_INFO = NO; 584 | SDKROOT = iphoneos; 585 | TARGETED_DEVICE_FAMILY = "1,2"; 586 | VALIDATE_PRODUCT = YES; 587 | }; 588 | name = Release; 589 | }; 590 | D4B3A22F1CAD09360075AB4C /* Debug */ = { 591 | isa = XCBuildConfiguration; 592 | baseConfigurationReference = 6A52DF9E9A2FFA3809872FE1 /* Pods-RxQuiz.debug.xcconfig */; 593 | buildSettings = { 594 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 595 | CODE_SIGN_IDENTITY = "iPhone Distribution"; 596 | CURRENT_PROJECT_VERSION = 13; 597 | FRAMEWORK_SEARCH_PATHS = ( 598 | "$(inherited)", 599 | "$(PROJECT_DIR)/Carthage/Build/iOS", 600 | ); 601 | INFOPLIST_FILE = RxQuiz/Info.plist; 602 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 603 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 604 | PRODUCT_BUNDLE_IDENTIFIER = com.nakailand.RxMarbleQuiz; 605 | PRODUCT_NAME = "$(TARGET_NAME)"; 606 | TARGETED_DEVICE_FAMILY = 1; 607 | VERSIONING_SYSTEM = "apple-generic"; 608 | }; 609 | name = Debug; 610 | }; 611 | D4B3A2301CAD09360075AB4C /* Release */ = { 612 | isa = XCBuildConfiguration; 613 | baseConfigurationReference = 404286BEF88AC504F9A800A0 /* Pods-RxQuiz.release.xcconfig */; 614 | buildSettings = { 615 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 616 | CODE_SIGN_IDENTITY = "iPhone Distribution"; 617 | CURRENT_PROJECT_VERSION = 13; 618 | FRAMEWORK_SEARCH_PATHS = ( 619 | "$(inherited)", 620 | "$(PROJECT_DIR)/Carthage/Build/iOS", 621 | ); 622 | INFOPLIST_FILE = RxQuiz/Info.plist; 623 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 624 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 625 | PRODUCT_BUNDLE_IDENTIFIER = com.nakailand.RxMarbleQuiz; 626 | PRODUCT_NAME = "$(TARGET_NAME)"; 627 | TARGETED_DEVICE_FAMILY = 1; 628 | VERSIONING_SYSTEM = "apple-generic"; 629 | }; 630 | name = Release; 631 | }; 632 | D4B3A2321CAD09360075AB4C /* Debug */ = { 633 | isa = XCBuildConfiguration; 634 | buildSettings = { 635 | BUNDLE_LOADER = "$(TEST_HOST)"; 636 | INFOPLIST_FILE = RxQuizTests/Info.plist; 637 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 638 | PRODUCT_BUNDLE_IDENTIFIER = com.nakailand.RxQuizTests; 639 | PRODUCT_NAME = "$(TARGET_NAME)"; 640 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RxQuiz.app/RxQuiz"; 641 | }; 642 | name = Debug; 643 | }; 644 | D4B3A2331CAD09360075AB4C /* Release */ = { 645 | isa = XCBuildConfiguration; 646 | buildSettings = { 647 | BUNDLE_LOADER = "$(TEST_HOST)"; 648 | INFOPLIST_FILE = RxQuizTests/Info.plist; 649 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 650 | PRODUCT_BUNDLE_IDENTIFIER = com.nakailand.RxQuizTests; 651 | PRODUCT_NAME = "$(TARGET_NAME)"; 652 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RxQuiz.app/RxQuiz"; 653 | }; 654 | name = Release; 655 | }; 656 | D4B3A2351CAD09360075AB4C /* Debug */ = { 657 | isa = XCBuildConfiguration; 658 | buildSettings = { 659 | INFOPLIST_FILE = RxQuizUITests/Info.plist; 660 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 661 | PRODUCT_BUNDLE_IDENTIFIER = com.nakailand.RxQuizUITests; 662 | PRODUCT_NAME = "$(TARGET_NAME)"; 663 | TEST_TARGET_NAME = RxQuiz; 664 | }; 665 | name = Debug; 666 | }; 667 | D4B3A2361CAD09360075AB4C /* Release */ = { 668 | isa = XCBuildConfiguration; 669 | buildSettings = { 670 | INFOPLIST_FILE = RxQuizUITests/Info.plist; 671 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 672 | PRODUCT_BUNDLE_IDENTIFIER = com.nakailand.RxQuizUITests; 673 | PRODUCT_NAME = "$(TARGET_NAME)"; 674 | TEST_TARGET_NAME = RxQuiz; 675 | }; 676 | name = Release; 677 | }; 678 | /* End XCBuildConfiguration section */ 679 | 680 | /* Begin XCConfigurationList section */ 681 | D4B3A2011CAD09350075AB4C /* Build configuration list for PBXProject "RxQuiz" */ = { 682 | isa = XCConfigurationList; 683 | buildConfigurations = ( 684 | D4B3A22C1CAD09360075AB4C /* Debug */, 685 | D4B3A22D1CAD09360075AB4C /* Release */, 686 | ); 687 | defaultConfigurationIsVisible = 0; 688 | defaultConfigurationName = Release; 689 | }; 690 | D4B3A22E1CAD09360075AB4C /* Build configuration list for PBXNativeTarget "RxQuiz" */ = { 691 | isa = XCConfigurationList; 692 | buildConfigurations = ( 693 | D4B3A22F1CAD09360075AB4C /* Debug */, 694 | D4B3A2301CAD09360075AB4C /* Release */, 695 | ); 696 | defaultConfigurationIsVisible = 0; 697 | defaultConfigurationName = Release; 698 | }; 699 | D4B3A2311CAD09360075AB4C /* Build configuration list for PBXNativeTarget "RxQuizTests" */ = { 700 | isa = XCConfigurationList; 701 | buildConfigurations = ( 702 | D4B3A2321CAD09360075AB4C /* Debug */, 703 | D4B3A2331CAD09360075AB4C /* Release */, 704 | ); 705 | defaultConfigurationIsVisible = 0; 706 | defaultConfigurationName = Release; 707 | }; 708 | D4B3A2341CAD09360075AB4C /* Build configuration list for PBXNativeTarget "RxQuizUITests" */ = { 709 | isa = XCConfigurationList; 710 | buildConfigurations = ( 711 | D4B3A2351CAD09360075AB4C /* Debug */, 712 | D4B3A2361CAD09360075AB4C /* Release */, 713 | ); 714 | defaultConfigurationIsVisible = 0; 715 | defaultConfigurationName = Release; 716 | }; 717 | /* End XCConfigurationList section */ 718 | }; 719 | rootObject = D4B3A1FE1CAD09350075AB4C /* Project object */; 720 | } 721 | -------------------------------------------------------------------------------- /RxQuiz.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxQuiz.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxQuiz/Additions/CollectionType+Additions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionType+Additions.swift 3 | // RxQuiz 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension CollectionType { 12 | /// Return a copy of `self` with its elements shuffled 13 | func shuffle() -> [Generator.Element] { 14 | var list = Array(self) 15 | list.shuffleInPlace() 16 | return list 17 | } 18 | } -------------------------------------------------------------------------------- /RxQuiz/Additions/MutableColletionType+Additions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MutableColletionType+Additions.swift 3 | // RxQuiz 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension MutableCollectionType where Index == Int { 12 | /// Shuffle the elements of `self` in-place. 13 | mutating func shuffleInPlace() { 14 | // empty and single-element collections don't shuffle 15 | if count < 2 { return } 16 | 17 | for i in 0.. Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(application: UIApplication) { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "size" : "60x60", 25 | "idiom" : "iphone", 26 | "filename" : "Rx.png", 27 | "scale" : "2x" 28 | }, 29 | { 30 | "idiom" : "iphone", 31 | "size" : "60x60", 32 | "scale" : "3x" 33 | }, 34 | { 35 | "idiom" : "ipad", 36 | "size" : "29x29", 37 | "scale" : "1x" 38 | }, 39 | { 40 | "idiom" : "ipad", 41 | "size" : "29x29", 42 | "scale" : "2x" 43 | }, 44 | { 45 | "idiom" : "ipad", 46 | "size" : "40x40", 47 | "scale" : "1x" 48 | }, 49 | { 50 | "idiom" : "ipad", 51 | "size" : "40x40", 52 | "scale" : "2x" 53 | }, 54 | { 55 | "idiom" : "ipad", 56 | "size" : "76x76", 57 | "scale" : "1x" 58 | }, 59 | { 60 | "idiom" : "ipad", 61 | "size" : "76x76", 62 | "scale" : "2x" 63 | }, 64 | { 65 | "idiom" : "ipad", 66 | "size" : "83.5x83.5", 67 | "scale" : "2x" 68 | } 69 | ], 70 | "info" : { 71 | "version" : 1, 72 | "author" : "xcode" 73 | } 74 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/AppIcon.appiconset/Rx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/AppIcon.appiconset/Rx.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_Throttle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_Throttle.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_Throttle.imageset/after_Throttle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_Throttle.imageset/after_Throttle.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_amb.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_amb.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_amb.imageset/after_amb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_amb.imageset/after_amb.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_combineLatest.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_combineLatest.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_combineLatest.imageset/after_combineLatest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_combineLatest.imageset/after_combineLatest.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_combineLatest2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_combineLatest2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_combineLatest2.imageset/after_combineLatest2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_combineLatest2.imageset/after_combineLatest2.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_concat.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_concat.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_concat.imageset/after_concat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_concat.imageset/after_concat.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_debounce.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_debounce.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_debounce.imageset/after_debounce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_debounce.imageset/after_debounce.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_delaySubscription.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_delaySubscription.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_delaySubscription.imageset/after_delaySubscription.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_delaySubscription.imageset/after_delaySubscription.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_distinctUntilChanged.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_distinctUntilChanged.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_distinctUntilChanged.imageset/after_distinctUntilChanged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_distinctUntilChanged.imageset/after_distinctUntilChanged.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_elementAt.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_elementAt.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_elementAt.imageset/after_elementAt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_elementAt.imageset/after_elementAt.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_filter.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_filter.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_filter.imageset/after_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_filter.imageset/after_filter.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_findIndex.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_findIndex.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_findIndex.imageset/after_findIndex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_findIndex.imageset/after_findIndex.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_ignoreElements.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_ignoreElements.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_ignoreElements.imageset/after_ignoreElements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_ignoreElements.imageset/after_ignoreElements.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_just.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_just.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_just.imageset/after_just.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_just.imageset/after_just.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_map.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_map.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_map.imageset/after_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_map.imageset/after_map.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_merge.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_merge.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_merge.imageset/after_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_merge.imageset/after_merge.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_merge2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_merge2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_merge2.imageset/after_merge2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_merge2.imageset/after_merge2.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_reduce.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_reduce.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_reduce.imageset/after_reduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_reduce.imageset/after_reduce.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_retry.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_retry.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_retry.imageset/after_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_retry.imageset/after_retry.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_sample.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_sample.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_sample.imageset/after_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_sample.imageset/after_sample.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_sample2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_sample2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_sample2.imageset/after_sample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_sample2.imageset/after_sample2.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_scan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_scan.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_scan.imageset/after_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_scan.imageset/after_scan.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_single.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_single.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_single.imageset/after_single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_single.imageset/after_single.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_skip.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_skip.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_skip.imageset/after_skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_skip.imageset/after_skip.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_skipUntil.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_skipUntil.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_skipUntil.imageset/after_skipUntil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_skipUntil.imageset/after_skipUntil.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_skipWhile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_skipWhile.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_skipWhile.imageset/after_skipWhile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_skipWhile.imageset/after_skipWhile.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_startWith.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_startWith.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_startWith.imageset/after_startWith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_startWith.imageset/after_startWith.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_switchLatest.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_switchLatest.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_switchLatest.imageset/after_switchLatest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_switchLatest.imageset/after_switchLatest.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_take.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_take.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_take.imageset/after_take.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_take.imageset/after_take.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeLast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_takeLast.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeLast.imageset/after_takeLast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_takeLast.imageset/after_takeLast.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeUntil.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_takeUntil.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeUntil.imageset/after_takeUntil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_takeUntil.imageset/after_takeUntil.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeWhile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_takeWhile.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeWhile.imageset/after_takeWhile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_takeWhile.imageset/after_takeWhile.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeWhileWithIndex.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_takeWhileWithIndex.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_takeWhileWithIndex.imageset/after_takeWhileWithIndex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_takeWhileWithIndex.imageset/after_takeWhileWithIndex.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_toArray.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_toArray.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_toArray.imageset/after_toArray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_toArray.imageset/after_toArray.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_withLatestFrom.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_withLatestFrom.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_withLatestFrom.imageset/after_withLatestFrom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_withLatestFrom.imageset/after_withLatestFrom.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_zip.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "after_zip.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/after_zip.imageset/after_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/after_zip.imageset/after_zip.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_Throttle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_Throttle.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_Throttle.imageset/before_Throttle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_Throttle.imageset/before_Throttle.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_amb.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_amb.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_amb.imageset/before_amb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_amb.imageset/before_amb.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_combineLatest.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_combineLatest.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_combineLatest.imageset/before_combineLatest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_combineLatest.imageset/before_combineLatest.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_combineLatest2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_combineLatest2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_combineLatest2.imageset/before_combineLatest2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_combineLatest2.imageset/before_combineLatest2.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_concat.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_concat.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_concat.imageset/before_concat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_concat.imageset/before_concat.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_debounce.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_debounce.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_debounce.imageset/before_debounce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_debounce.imageset/before_debounce.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_delaySubscription.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_delaySubscription.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_delaySubscription.imageset/before_delaySubscription.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_delaySubscription.imageset/before_delaySubscription.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_distinctUntilChanged.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_distinctUntilChanged.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_distinctUntilChanged.imageset/before_distinctUntilChanged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_distinctUntilChanged.imageset/before_distinctUntilChanged.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_elementAt.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_elementAt.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_elementAt.imageset/before_elementAt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_elementAt.imageset/before_elementAt.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_filter.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_filter.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_filter.imageset/before_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_filter.imageset/before_filter.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_findIndex.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_findIndex.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_findIndex.imageset/before_findIndex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_findIndex.imageset/before_findIndex.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_ignoreElements.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_ignoreElements.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_ignoreElements.imageset/before_ignoreElements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_ignoreElements.imageset/before_ignoreElements.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_map.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_map.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_map.imageset/before_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_map.imageset/before_map.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_merge.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_merge.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_merge.imageset/before_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_merge.imageset/before_merge.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_merge2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_merge2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_merge2.imageset/before_merge2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_merge2.imageset/before_merge2.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_reduce.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_reduce.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_reduce.imageset/before_reduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_reduce.imageset/before_reduce.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_retry.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_retry.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_retry.imageset/before_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_retry.imageset/before_retry.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_sample.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_sample.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_sample.imageset/before_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_sample.imageset/before_sample.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_sample2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_sample2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_sample2.imageset/before_sample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_sample2.imageset/before_sample2.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_scan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_scan.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_scan.imageset/before_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_scan.imageset/before_scan.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_single.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_single.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_single.imageset/before_single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_single.imageset/before_single.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_skip.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_skip.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_skip.imageset/before_skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_skip.imageset/before_skip.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_skipUntil.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_skipUntil.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_skipUntil.imageset/before_skipUntil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_skipUntil.imageset/before_skipUntil.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_skipWhile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_skipWhile.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_skipWhile.imageset/before_skipWhile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_skipWhile.imageset/before_skipWhile.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_startWith.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_startWith.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_startWith.imageset/before_startWith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_startWith.imageset/before_startWith.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_switchLatest.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_switchLatest.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_switchLatest.imageset/before_switchLatest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_switchLatest.imageset/before_switchLatest.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_take.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_take.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_take.imageset/before_take.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_take.imageset/before_take.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeLast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_takeLast.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeLast.imageset/before_takeLast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_takeLast.imageset/before_takeLast.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeUntil.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_takeUntil.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeUntil.imageset/before_takeUntil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_takeUntil.imageset/before_takeUntil.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeWhile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_takeWhile.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeWhile.imageset/before_takeWhile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_takeWhile.imageset/before_takeWhile.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeWhileWithIndex.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_takeWhileWithIndex.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_takeWhileWithIndex.imageset/before_takeWhileWithIndex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_takeWhileWithIndex.imageset/before_takeWhileWithIndex.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_toArray.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_toArray.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_toArray.imageset/before_toArray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_toArray.imageset/before_toArray.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_withLatestFrom.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_withLatestFrom.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_withLatestFrom.imageset/before_withLatestFrom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_withLatestFrom.imageset/before_withLatestFrom.png -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_zip.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "before_zip.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /RxQuiz/Assets.xcassets/before_zip.imageset/before_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Assets.xcassets/before_zip.imageset/before_zip.png -------------------------------------------------------------------------------- /RxQuiz/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /RxQuiz/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 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 13 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /RxQuiz/JSON/Quiz.json: -------------------------------------------------------------------------------- 1 | { 2 | "questions": [ 3 | { "answer" : "merge", "beforeImage" : "before_merge", "afterImage" : "after_merge" }, 4 | { "answer" : "zip", "beforeImage" : "before_zip", "afterImage" : "after_zip" }, 5 | { "answer" : "take(2)", "beforeImage" : "before_take", "afterImage" : "after_take" }, 6 | { "answer" : "takeLast(1)", "beforeImage" : "before_takeLast", "afterImage" : "after_takeLast" }, 7 | { "answer" : "sample", "beforeImage" : "before_sample", "afterImage" : "after_sample" }, 8 | { "answer" : "scan", "beforeImage" : "before_scan", "afterImage" : "after_scan" }, 9 | { "answer" : "combineLatest", "beforeImage" : "before_combineLatest", "afterImage" : "after_combineLatest" }, 10 | { "answer" : "concat", "beforeImage" : "before_concat", "afterImage" : "after_concat" }, 11 | { "answer" : "map(x => 10 * x)", "beforeImage" : "before_map", "afterImage" : "after_map" }, 12 | { "answer" : "startWith(1)", "beforeImage" : "before_startWith", "afterImage" : "after_startWith" }, 13 | { "answer" : "reduce((x, y) => x + y)", "beforeImage" : "before_reduce", "afterImage" : "after_reduce" }, 14 | { "answer" : "combineLatest(a, b)", "beforeImage" : "before_combineLatest2", "afterImage" : "after_combineLatest2" }, 15 | { "answer" : "retry(2)", "beforeImage" : "before_retry", "afterImage" : "after_retry" }, 16 | { "answer" : "toArray", "beforeImage" : "before_toArray", "afterImage" : "after_toArray" }, 17 | { "answer" : "a.takeWhileWithIndex { e, i in i < 4 }", "beforeImage" : "before_takeWhileWithIndex", "afterImage" : "after_takeWhileWithIndex" }, 18 | { "answer" : "a.debounce(100, scheduler: s)", "beforeImage" : "before_debounce", "afterImage" : "after_debounce" }, 19 | { "answer" : "a.delaySubscription(150, scheduler: s)", "beforeImage" : "before_delaySubscription", "afterImage" : "after_delaySubscription" }, 20 | { "answer" : "a.takeWhile { $0 < 4 }", "beforeImage" : "before_takeWhile", "afterImage" : "after_takeWhile" }, 21 | { "answer" : "a.takeUntil(b)", "beforeImage" : "before_takeUntil", "afterImage" : "after_takeUntil" }, 22 | { "answer" : "a.skipUntil(b)", "beforeImage" : "before_skipUntil", "afterImage" : "after_skipUntil" }, 23 | { "answer" : "a.skipWhile { $0 < 4 }", "beforeImage" : "before_skipWhile", "afterImage" : "after_skipWhile" }, 24 | { "answer" : "a.filter { $0 > 10 }", "beforeImage" : "before_filter", "afterImage" : "after_filter" }, 25 | { "answer" : "Observable.of(a, b).switchLatest()", "beforeImage" : "before_switchLatest", "afterImage" : "after_switchLatest" }, 26 | { "answer" : "a.distinctUntilChanged()", "beforeImage" : "before_distinctUntilChanged", "afterImage" : "after_distinctUntilChanged" }, 27 | { "answer" : "a.sample(b)", "beforeImage" : "before_sample2", "afterImage" : "after_sample2" }, 28 | { "answer" : "a.throttle(100, scheduler: s)", "beforeImage" : "before_Throttle", "afterImage" : "after_Throttle" }, 29 | { "answer" : "a.amb(b)", "beforeImage" : "before_amb", "afterImage" : "after_amb" }, 30 | { "answer" : "a.single()", "beforeImage" : "before_single", "afterImage" : "after_single" }, 31 | { "answer" : "ignoreElements", "beforeImage" : "before_ignoreElements", "afterImage" : "after_ignoreElements" }, 32 | { "answer" : "Observable.of(a, b).merge()", "beforeImage" : "before_merge2", "afterImage" : "after_merge2" }, 33 | { "answer" : "a.withLatestFrom(b)", "beforeImage" : "before_withLatestFrom", "afterImage" : "after_withLatestFrom" }, 34 | { "answer" : "a.elementAt(2)", "beforeImage" : "before_elementAt", "afterImage" : "after_elementAt" }, 35 | { "answer" : "findIndex(x => x > 10)", "beforeImage" : "before_findIndex", "afterImage" : "after_findIndex" } 36 | ] 37 | } -------------------------------------------------------------------------------- /RxQuiz/Model/Question.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Question.swift 3 | // RxQuiz 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Argo 11 | import Curry 12 | 13 | struct Question { 14 | let beforeImage: String 15 | let afterImage: String 16 | let answer: String 17 | } 18 | 19 | extension Question: Decodable { 20 | static func decode(j: JSON) -> Decoded { 21 | return curry(Question.init) 22 | <^> j <| "beforeImage" 23 | <*> j <| "afterImage" 24 | <*> j <| "answer" 25 | } 26 | } 27 | 28 | func JSONFromFile(file: String) -> AnyObject? { 29 | return NSBundle.mainBundle().pathForResource(file, ofType: "json") 30 | .flatMap { NSData(contentsOfFile: $0) } 31 | .flatMap(JSONObjectWithData) 32 | } 33 | 34 | func JSONObjectWithData(data: NSData) -> AnyObject? { 35 | do { return try NSJSONSerialization.JSONObjectWithData(data, options: []) } 36 | catch { return .None } 37 | } 38 | -------------------------------------------------------------------------------- /RxQuiz/Sound/correct.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Sound/correct.mp3 -------------------------------------------------------------------------------- /RxQuiz/Sound/incorrect.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakailand/RxQuiz/2f084e5222b41f65f3598a5c6eebc5933f701707/RxQuiz/Sound/incorrect.mp3 -------------------------------------------------------------------------------- /RxQuiz/Storyboard/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /RxQuiz/Storyboard/Quiz.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 43 | 51 | 59 | 67 | 76 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /RxQuiz/ViewController/QuizViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuizViewController.swift 3 | // RxQuiz 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import RxCocoa 12 | import Argo 13 | import AVFoundation 14 | import Social 15 | 16 | final class QuizViewController: UIViewController { 17 | @IBOutlet weak var timeLabel: UILabel! 18 | private var startDate = NSDate() 19 | @IBOutlet weak var beforeImageView: UIImageView! 20 | @IBOutlet weak var afterImageView: UIImageView! 21 | @IBOutlet weak var answerButton1: UIButton! 22 | @IBOutlet weak var answerButton2: UIButton! 23 | @IBOutlet weak var answerButton3: UIButton! 24 | @IBOutlet weak var answerButton4: UIButton! 25 | 26 | private let answers = [ 27 | "merge", 28 | "zip", 29 | "take(2)", 30 | "takeLast(1)", 31 | "sample", 32 | "scan", 33 | "combineLatest", 34 | "concat", 35 | "map(x => 10 * x)", 36 | "startWith(1)", 37 | "reduce((x, y) => x + y)", 38 | "combineLatest(a, b)", 39 | "retry(2)", 40 | "toArray", 41 | "a.takeWhileWithIndex { e, i in i < 4 }", 42 | "a.debounce(100, scheduler: s)", 43 | "a.delaySubscription(150, scheduler: s)", 44 | "a.takeWhile { $0 < 4 }", 45 | "a.takeUntil(b)", 46 | "a.skipUntil(b)", 47 | "a.skipWhile { $0 < 4 }", 48 | "a.filter { $0 > 10 }", 49 | "Observable.of(a, b).switchLatest()", 50 | "a.distinctUntilChanged()", 51 | "a.sample(b)", 52 | "a.throttle(100, scheduler: s)", 53 | "a.amb(b)", 54 | "a.single()", 55 | "ignoreElements", 56 | "Observable.of(a, b).merge()", 57 | "a.withLatestFrom(b)", 58 | "a.elementAt(2)", 59 | "findIndex(x => x > 10)" 60 | ] 61 | 62 | private let disposeBag = DisposeBag() 63 | private let questions = Variable<[Question]>([]) 64 | private let currentQuestionIndex = Variable(0) 65 | private let correctAnswerCount = Variable(0) 66 | private let currentQuestion = Variable(Question(beforeImage: "", afterImage: "", answer: "")) 67 | private let currentAnswer = Variable("") 68 | 69 | private var buttons: [UIButton] { 70 | return [answerButton1, answerButton2, answerButton3, answerButton4] 71 | } 72 | 73 | override func viewDidLoad() { 74 | super.viewDidLoad() 75 | Observable.timer(RxTimeInterval(0), period: RxTimeInterval(0.1), scheduler: MainScheduler.instance) 76 | .filter { [unowned self] _ in 77 | self.currentQuestionIndex.value != self.questions.value.endIndex 78 | } 79 | .subscribeNext { [unowned self] _ in 80 | let time = -self.startDate.timeIntervalSinceNow 81 | let minutes = Int(time / 60) 82 | let seconds = Int(time % 60) 83 | let tenthsOfSecond = Int(time * 10 % 10) 84 | self.timeLabel.text = String(format: "%02d:%02d.%d", 85 | minutes, seconds, tenthsOfSecond) 86 | } 87 | .addDisposableTo(disposeBag) 88 | 89 | guard let correctSoundPath = NSBundle.mainBundle().pathForResource("correct", ofType: "mp3"), 90 | correctSoundAudioPlayer = try? AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: correctSoundPath), fileTypeHint: "mp3") else { 91 | return 92 | } 93 | correctSoundAudioPlayer.prepareToPlay() 94 | 95 | guard let incorrectSoundPath = NSBundle.mainBundle().pathForResource("incorrect", ofType: "mp3"), 96 | incorrectSoundAudioPlayer = try? AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: incorrectSoundPath), fileTypeHint: "mp3") else { 97 | return 98 | } 99 | incorrectSoundAudioPlayer.prepareToPlay() 100 | 101 | questions.asObservable() 102 | .filter { $0.isEmpty } 103 | .subscribeNext { [unowned self] _ in 104 | let questions: [Question] = (JSONFromFile("Quiz")?["questions"].flatMap(decode))! 105 | questions.shuffle().toObservable() 106 | .take(10) 107 | .subscribeNext { 108 | self.questions.value.append($0) 109 | } 110 | .addDisposableTo(self.disposeBag) 111 | } 112 | .addDisposableTo(disposeBag) 113 | 114 | buttons.forEach { button in 115 | button.rx_tap 116 | .subscribeNext { [unowned self] in 117 | if button.titleLabel!.text! == self.currentAnswer.value { 118 | self.correctAnswerCount.value += 1 119 | correctSoundAudioPlayer.play() 120 | } else { 121 | incorrectSoundAudioPlayer.play() 122 | } 123 | self.currentQuestionIndex.value += 1 124 | } 125 | .addDisposableTo(disposeBag) 126 | } 127 | 128 | currentQuestionIndex.asDriver() 129 | .filter { [unowned self] in $0 < self.questions.value.endIndex } 130 | .driveNext { [unowned self] count in 131 | let question = self.questions.value[count] 132 | self.currentQuestion.value = question 133 | self.currentAnswer.value = question.answer 134 | } 135 | .addDisposableTo(disposeBag) 136 | 137 | currentQuestionIndex.asDriver() 138 | .filter { [unowned self] in $0 == self.questions.value.endIndex } 139 | .withLatestFrom(correctAnswerCount.asDriver() 140 | .map { count -> String in 141 | switch count { 142 | case 0 ..< 3: return "You're a Rx beginner." 143 | case 3 ..< 6: return "You're a faked Rx evangelist." 144 | case 6 ..< 10: return "You're an almost real Rx evangelist." 145 | case 10: return "Congraturations! You're a real evangelist." 146 | default: return "fool" 147 | } 148 | } 149 | ) 150 | .driveNext { [unowned self] message in 151 | func restart() { 152 | self.questions.value.removeAll() 153 | self.currentQuestionIndex.value = 0 154 | self.correctAnswerCount.value = 0 155 | self.startDate = NSDate() 156 | } 157 | 158 | let alertController = UIAlertController( 159 | title: "\(self.correctAnswerCount.value) questions correct", 160 | message: "\(self.timeLabel!.text!)seconds\n\(message)", 161 | preferredStyle: .Alert 162 | ) 163 | 164 | let okAction = UIAlertAction(title: "Try Again", style: .Default) { _ in 165 | restart() 166 | } 167 | 168 | let shareAction = UIAlertAction(title: "Share with Twitter", style: .Default) { [unowned self] _ in 169 | let composeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter) 170 | composeViewController.completionHandler = { _ in 171 | restart() 172 | } 173 | composeViewController.setInitialText("\(self.correctAnswerCount.value) questions correct\n\(self.timeLabel!.text!)seconds\n\(message)\n#RxMarbleQuiz") 174 | self.presentViewController(composeViewController, animated: true, completion: nil) 175 | } 176 | 177 | alertController.addAction(okAction) 178 | alertController.addAction(shareAction) 179 | self.presentViewController(alertController, animated: true, completion: nil) 180 | } 181 | .addDisposableTo(disposeBag) 182 | 183 | currentQuestion.asDriver() 184 | .driveNext { [unowned self] question in 185 | self.beforeImageView.image = UIImage(named: question.beforeImage) 186 | self.afterImageView.image = UIImage(named: question.afterImage) 187 | } 188 | .addDisposableTo(disposeBag) 189 | 190 | currentAnswer.asDriver() 191 | .driveNext { [unowned self] answer in 192 | let incorrectAnswers = self.answers.filter { $0 != answer }.shuffle()[0...2] 193 | let answerArray = [answer, incorrectAnswers[0], incorrectAnswers[1], incorrectAnswers[2]].shuffle() 194 | self.buttons.enumerate().forEach{ (number, button) in 195 | button.setTitle(answerArray[number], forState: .Normal) 196 | } 197 | } 198 | .addDisposableTo(disposeBag) 199 | } 200 | 201 | override func didReceiveMemoryWarning() { 202 | super.didReceiveMemoryWarning() 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /RxQuiz/ViewController/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // RxQuiz 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import RxCocoa 12 | 13 | class ViewController: UIViewController { 14 | 15 | @IBOutlet weak var startButton: UIButton! 16 | let disposeBag = DisposeBag() 17 | override func viewDidLoad() { 18 | super.viewDidLoad() 19 | startButton.rx_tap 20 | .subscribeNext { 21 | let storyBoard = UIStoryboard(name: "Quiz", bundle: NSBundle.mainBundle()) 22 | let quizViewController = storyBoard.instantiateInitialViewController() as! QuizViewController 23 | self.addChildViewController(quizViewController) 24 | self.view.addSubview(quizViewController.view) 25 | self.didMoveToParentViewController(self) 26 | } 27 | .addDisposableTo(disposeBag) 28 | } 29 | 30 | override func didReceiveMemoryWarning() { 31 | super.didReceiveMemoryWarning() 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /RxQuizTests/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 | 13 23 | 24 | 25 | -------------------------------------------------------------------------------- /RxQuizTests/RxQuizTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxQuizTests.swift 3 | // RxQuizTests 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import RxQuiz 11 | 12 | class RxQuizTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /RxQuizUITests/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 | 13 23 | 24 | 25 | -------------------------------------------------------------------------------- /RxQuizUITests/RxQuizUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxQuizUITests.swift 3 | // RxQuizUITests 4 | // 5 | // Created by nakazy on 2016/03/31. 6 | // Copyright © 2016年 nakazy. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class RxQuizUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | let app = XCUIApplication() 16 | setupSnapshot(app) 17 | app.launch() 18 | } 19 | 20 | override func tearDown() { 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | XCUIApplication().buttons["Start"].tap() 26 | snapshot("0Launch") 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /RxQuizUITests/SnapshotHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapshotHelper.swift 3 | // Example 4 | // 5 | // Created by Felix Krause on 10/8/15. 6 | // Copyright © 2015 Felix Krause. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import XCTest 11 | 12 | var deviceLanguage = "" 13 | var locale = "" 14 | 15 | @available(*, deprecated, message="use setupSnapshot: instead") 16 | func setLanguage(app: XCUIApplication) { 17 | setupSnapshot(app) 18 | } 19 | 20 | func setupSnapshot(app: XCUIApplication) { 21 | Snapshot.setupSnapshot(app) 22 | } 23 | 24 | func snapshot(name: String, waitForLoadingIndicator: Bool = true) { 25 | Snapshot.snapshot(name, waitForLoadingIndicator: waitForLoadingIndicator) 26 | } 27 | 28 | class Snapshot: NSObject { 29 | 30 | class func setupSnapshot(app: XCUIApplication) { 31 | setLanguage(app) 32 | setLocale(app) 33 | setLaunchArguments(app) 34 | } 35 | 36 | class func setLanguage(app: XCUIApplication) { 37 | guard let prefix = pathPrefix() else { 38 | return 39 | } 40 | 41 | let path = prefix.stringByAppendingPathComponent("language.txt") 42 | 43 | do { 44 | let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() 45 | deviceLanguage = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String 46 | app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"] 47 | } catch { 48 | print("Couldn't detect/set language...") 49 | } 50 | } 51 | 52 | class func setLocale(app: XCUIApplication) { 53 | guard let prefix = pathPrefix() else { 54 | return 55 | } 56 | 57 | let path = prefix.stringByAppendingPathComponent("locale.txt") 58 | 59 | do { 60 | let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() 61 | locale = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String 62 | } catch { 63 | print("Couldn't detect/set locale...") 64 | } 65 | if locale.isEmpty { 66 | locale = NSLocale(localeIdentifier: deviceLanguage).localeIdentifier 67 | } 68 | app.launchArguments += ["-AppleLocale", "\"\(locale)\""] 69 | } 70 | 71 | class func setLaunchArguments(app: XCUIApplication) { 72 | guard let prefix = pathPrefix() else { 73 | return 74 | } 75 | 76 | let path = prefix.stringByAppendingPathComponent("snapshot-launch_arguments.txt") 77 | app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"] 78 | 79 | do { 80 | let launchArguments = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) as String 81 | let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: []) 82 | let matches = regex.matchesInString(launchArguments, options: [], range: NSRange(location:0, length:launchArguments.characters.count)) 83 | let results = matches.map { result -> String in 84 | (launchArguments as NSString).substringWithRange(result.range) 85 | } 86 | app.launchArguments += results 87 | } catch { 88 | print("Couldn't detect/set launch_arguments...") 89 | } 90 | } 91 | 92 | class func snapshot(name: String, waitForLoadingIndicator: Bool = true) { 93 | if waitForLoadingIndicator { 94 | waitForLoadingIndicatorToDisappear() 95 | } 96 | 97 | print("snapshot: \(name)") // more information about this, check out https://github.com/fastlane/snapshot 98 | 99 | sleep(1) // Waiting for the animation to be finished (kind of) 100 | XCUIDevice.sharedDevice().orientation = .Unknown 101 | } 102 | 103 | class func waitForLoadingIndicatorToDisappear() { 104 | let query = XCUIApplication().statusBars.childrenMatchingType(.Other).elementBoundByIndex(1).childrenMatchingType(.Other) 105 | 106 | while (0.. NSString? { 113 | if let path = NSProcessInfo().environment["SIMULATOR_HOST_HOME"] as NSString? { 114 | return path.stringByAppendingPathComponent("Library/Caches/tools.fastlane") 115 | } 116 | print("Couldn't find Snapshot configuration files at ~/Library/Caches/tools.fastlane") 117 | return nil 118 | } 119 | } 120 | 121 | extension XCUIElement { 122 | var isLoadingIndicator: Bool { 123 | return self.frame.size == CGSize(width: 10, height: 20) 124 | } 125 | } 126 | 127 | // Please don't remove the lines below 128 | // They are used to detect outdated configuration files 129 | // SnapshotHelperVersion [1.2] 130 | --------------------------------------------------------------------------------