├── .gitignore
├── Podfile
├── README.md
├── RWReactivePlayground.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcuserdata
│ └── ceberhardt.xcuserdatad
│ └── xcschemes
│ ├── RWReactivePlayground.xcscheme
│ └── xcschememanagement.plist
├── RWReactivePlayground.xcworkspace
└── contents.xcworkspacedata
├── RWReactivePlayground
├── Base.lproj
│ └── Main.storyboard
├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── LaunchImage.launchimage
│ │ └── Contents.json
├── RWAppDelegate.h
├── RWAppDelegate.m
├── RWDummySignInService.h
├── RWDummySignInService.m
├── RWReactivePlayground-Info.plist
├── RWReactivePlayground-Prefix.pch
├── RWViewController.h
├── RWViewController.m
├── en.lproj
│ └── InfoPlist.strings
├── kitten.jpg
└── main.m
└── ReactivePlaygroundStarter.jpg
/.gitignore:
--------------------------------------------------------------------------------
1 | #########################
2 | # .gitignore file for Xcode4 / OS X Source projects
3 | #
4 | # Version 2.0
5 | # For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
6 | #
7 | # 2013 updates:
8 | # - fixed the broken "save personal Schemes"
9 | #
10 | # NB: if you are storing "built" products, this WILL NOT WORK,
11 | # and you should use a different .gitignore (or none at all)
12 | # This file is for SOURCE projects, where there are many extra
13 | # files that we want to exclude
14 | #
15 | #########################
16 |
17 | #####
18 | # OS X temporary files that should never be committed
19 |
20 | .DS_Store
21 | *.swp
22 | *.lock
23 | profile
24 |
25 |
26 | ####
27 | # Xcode temporary files that should never be committed
28 | #
29 | # NB: NIB/XIB files still exist even on Storyboard projects, so we want this...
30 |
31 | *~.nib
32 |
33 |
34 | ####
35 | # Xcode build files -
36 | #
37 | # NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"
38 |
39 | DerivedData/
40 |
41 | # NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"
42 |
43 | build/
44 |
45 |
46 | #####
47 | # Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
48 | #
49 | # This is complicated:
50 | #
51 | # SOMETIMES you need to put this file in version control.
52 | # Apple designed it poorly - if you use "custom executables", they are
53 | # saved in this file.
54 | # 99% of projects do NOT use those, so they do NOT want to version control this file.
55 | # ..but if you're in the 1%, comment out the line "*.pbxuser"
56 |
57 | *.pbxuser
58 | *.mode1v3
59 | *.mode2v3
60 | *.perspectivev3
61 | # NB: also, whitelist the default ones, some projects need to use these
62 | !default.pbxuser
63 | !default.mode1v3
64 | !default.mode2v3
65 | !default.perspectivev3
66 |
67 |
68 | ####
69 | # Xcode 4 - semi-personal settings
70 | #
71 | #
72 | # OPTION 1: ---------------------------------
73 | # throw away ALL personal settings (including custom schemes!
74 | # - unless they are "shared")
75 | #
76 | # NB: this is exclusive with OPTION 2 below
77 | xcuserdata
78 |
79 | # OPTION 2: ---------------------------------
80 | # get rid of ALL personal settings, but KEEP SOME OF THEM
81 | # - NB: you must manually uncomment the bits you want to keep
82 | #
83 | # NB: this is exclusive with OPTION 1 above
84 | #
85 | #xcuserdata/**/*
86 |
87 | # (requires option 2 above): Personal Schemes
88 | #
89 | #!xcuserdata/**/xcschemes/*
90 |
91 | ####
92 | # XCode 4 workspaces - more detailed
93 | #
94 | # Workspaces are important! They are a core feature of Xcode - don't exclude them :)
95 | #
96 | # Workspace layout is quite spammy. For reference:
97 | #
98 | # /(root)/
99 | # /(project-name).xcodeproj/
100 | # project.pbxproj
101 | # /project.xcworkspace/
102 | # contents.xcworkspacedata
103 | # /xcuserdata/
104 | # /(your name)/xcuserdatad/
105 | # UserInterfaceState.xcuserstate
106 | # /xcsshareddata/
107 | # /xcschemes/
108 | # (shared scheme name).xcscheme
109 | # /xcuserdata/
110 | # /(your name)/xcuserdatad/
111 | # (private scheme).xcscheme
112 | # xcschememanagement.plist
113 | #
114 | #
115 |
116 | ####
117 | # Xcode 4 - Deprecated classes
118 | #
119 | # Allegedly, if you manually "deprecate" your classes, they get moved here.
120 | #
121 | # We're using source-control, so this is a "feature" that we do not want!
122 |
123 | *.moved-aside
124 |
125 | ####
126 | # Cocoapods: cocoapods.org
127 | #
128 | # Ignoring these files means that whoever uses the code will first have to run:
129 | # pod install
130 | # in the App.xcodeproj directory.
131 | # This ensures the latest dependencies are used.
132 | Pods/
133 | Podfile.lock
134 |
135 |
136 | ####
137 | # UNKNOWN: recommended by others, but I can't discover what these files are
138 | #
139 | # ...none. Everything is now explained.
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '7.0'
2 |
3 | pod 'ReactiveCocoa', '2.1.8'
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #Reactive Playground
2 |
3 | This project accompanies an article I wrote for [raywenderlich.com](http://www.raywendelich.com) on the subject of ReactiveCocoa. This project demonstrates how to introduce reactive concepts to a simple sign in screen.
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RWReactivePlayground.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | archiveVersion
6 | 1
7 | classes
8 |
9 | objectVersion
10 | 46
11 | objects
12 |
13 | 08A3AF6F6456432C9561F244
14 |
15 | explicitFileType
16 | archive.ar
17 | includeInIndex
18 | 0
19 | isa
20 | PBXFileReference
21 | path
22 | libPods.a
23 | sourceTree
24 | BUILT_PRODUCTS_DIR
25 |
26 | 3BF9C92AA2B44B05B25FF647
27 |
28 | includeInIndex
29 | 1
30 | isa
31 | PBXFileReference
32 | lastKnownFileType
33 | text.xcconfig
34 | name
35 | Pods.xcconfig
36 | path
37 | Pods/Pods.xcconfig
38 | sourceTree
39 | <group>
40 |
41 | 721E122618698DC100B30134
42 |
43 | isa
44 | PBXFileReference
45 | lastKnownFileType
46 | image.jpeg
47 | path
48 | kitten.jpg
49 | sourceTree
50 | <group>
51 |
52 | 721E122718698DC100B30134
53 |
54 | fileRef
55 | 721E122618698DC100B30134
56 | isa
57 | PBXBuildFile
58 |
59 | 72A2881118618A2E00DDD30A
60 |
61 | children
62 |
63 | 72A2882318618A2E00DDD30A
64 | 72A2881C18618A2E00DDD30A
65 | 72A2881B18618A2E00DDD30A
66 | 3BF9C92AA2B44B05B25FF647
67 |
68 | isa
69 | PBXGroup
70 | sourceTree
71 | <group>
72 |
73 | 72A2881218618A2E00DDD30A
74 |
75 | attributes
76 |
77 | CLASSPREFIX
78 | RW
79 | LastUpgradeCheck
80 | 0500
81 | ORGANIZATIONNAME
82 | Colin Eberhardt
83 | TargetAttributes
84 |
85 | 72A2883A18618A2E00DDD30A
86 |
87 | TestTargetID
88 | 72A2881918618A2E00DDD30A
89 |
90 |
91 |
92 | buildConfigurationList
93 | 72A2881518618A2E00DDD30A
94 | compatibilityVersion
95 | Xcode 3.2
96 | developmentRegion
97 | English
98 | hasScannedForEncodings
99 | 0
100 | isa
101 | PBXProject
102 | knownRegions
103 |
104 | en
105 | Base
106 |
107 | mainGroup
108 | 72A2881118618A2E00DDD30A
109 | productRefGroup
110 | 72A2881B18618A2E00DDD30A
111 | projectDirPath
112 |
113 | projectReferences
114 |
115 | projectRoot
116 |
117 | targets
118 |
119 | 72A2881918618A2E00DDD30A
120 | 72A2883A18618A2E00DDD30A
121 |
122 |
123 | 72A2881518618A2E00DDD30A
124 |
125 | buildConfigurations
126 |
127 | 72A2884A18618A2E00DDD30A
128 | 72A2884B18618A2E00DDD30A
129 |
130 | defaultConfigurationIsVisible
131 | 0
132 | defaultConfigurationName
133 | Release
134 | isa
135 | XCConfigurationList
136 |
137 | 72A2881618618A2E00DDD30A
138 |
139 | buildActionMask
140 | 2147483647
141 | files
142 |
143 | 72A2882A18618A2E00DDD30A
144 | 72A2883418618A2E00DDD30A
145 | 72A2882E18618A2E00DDD30A
146 | 72A2885418620EA100DDD30A
147 |
148 | isa
149 | PBXSourcesBuildPhase
150 | runOnlyForDeploymentPostprocessing
151 | 0
152 |
153 | 72A2881718618A2E00DDD30A
154 |
155 | buildActionMask
156 | 2147483647
157 | files
158 |
159 | 72A2882018618A2E00DDD30A
160 | 72A2882218618A2E00DDD30A
161 | 72A2881E18618A2E00DDD30A
162 | 984FCCAD77574686877BDB16
163 |
164 | isa
165 | PBXFrameworksBuildPhase
166 | runOnlyForDeploymentPostprocessing
167 | 0
168 |
169 | 72A2881818618A2E00DDD30A
170 |
171 | buildActionMask
172 | 2147483647
173 | files
174 |
175 | 721E122718698DC100B30134
176 | 72A2883618618A2E00DDD30A
177 | 72A2882818618A2E00DDD30A
178 | 72A2883118618A2E00DDD30A
179 |
180 | isa
181 | PBXResourcesBuildPhase
182 | runOnlyForDeploymentPostprocessing
183 | 0
184 |
185 | 72A2881918618A2E00DDD30A
186 |
187 | buildConfigurationList
188 | 72A2884C18618A2E00DDD30A
189 | buildPhases
190 |
191 | F9535506389D4058AFB78394
192 | 72A2881618618A2E00DDD30A
193 | 72A2881718618A2E00DDD30A
194 | 72A2881818618A2E00DDD30A
195 | 790202DB2DB5410F96E90070
196 |
197 | buildRules
198 |
199 | dependencies
200 |
201 | isa
202 | PBXNativeTarget
203 | name
204 | RWReactivePlayground
205 | productName
206 | RWReactivePlayground
207 | productReference
208 | 72A2881A18618A2E00DDD30A
209 | productType
210 | com.apple.product-type.application
211 |
212 | 72A2881A18618A2E00DDD30A
213 |
214 | explicitFileType
215 | wrapper.application
216 | includeInIndex
217 | 0
218 | isa
219 | PBXFileReference
220 | path
221 | RWReactivePlayground.app
222 | sourceTree
223 | BUILT_PRODUCTS_DIR
224 |
225 | 72A2881B18618A2E00DDD30A
226 |
227 | children
228 |
229 | 72A2881A18618A2E00DDD30A
230 | 72A2883B18618A2E00DDD30A
231 |
232 | isa
233 | PBXGroup
234 | name
235 | Products
236 | sourceTree
237 | <group>
238 |
239 | 72A2881C18618A2E00DDD30A
240 |
241 | children
242 |
243 | 72A2881D18618A2E00DDD30A
244 | 72A2881F18618A2E00DDD30A
245 | 72A2882118618A2E00DDD30A
246 | 72A2883C18618A2E00DDD30A
247 | 08A3AF6F6456432C9561F244
248 |
249 | isa
250 | PBXGroup
251 | name
252 | Frameworks
253 | sourceTree
254 | <group>
255 |
256 | 72A2881D18618A2E00DDD30A
257 |
258 | isa
259 | PBXFileReference
260 | lastKnownFileType
261 | wrapper.framework
262 | name
263 | Foundation.framework
264 | path
265 | System/Library/Frameworks/Foundation.framework
266 | sourceTree
267 | SDKROOT
268 |
269 | 72A2881E18618A2E00DDD30A
270 |
271 | fileRef
272 | 72A2881D18618A2E00DDD30A
273 | isa
274 | PBXBuildFile
275 |
276 | 72A2881F18618A2E00DDD30A
277 |
278 | isa
279 | PBXFileReference
280 | lastKnownFileType
281 | wrapper.framework
282 | name
283 | CoreGraphics.framework
284 | path
285 | System/Library/Frameworks/CoreGraphics.framework
286 | sourceTree
287 | SDKROOT
288 |
289 | 72A2882018618A2E00DDD30A
290 |
291 | fileRef
292 | 72A2881F18618A2E00DDD30A
293 | isa
294 | PBXBuildFile
295 |
296 | 72A2882118618A2E00DDD30A
297 |
298 | isa
299 | PBXFileReference
300 | lastKnownFileType
301 | wrapper.framework
302 | name
303 | UIKit.framework
304 | path
305 | System/Library/Frameworks/UIKit.framework
306 | sourceTree
307 | SDKROOT
308 |
309 | 72A2882218618A2E00DDD30A
310 |
311 | fileRef
312 | 72A2882118618A2E00DDD30A
313 | isa
314 | PBXBuildFile
315 |
316 | 72A2882318618A2E00DDD30A
317 |
318 | children
319 |
320 | 721E122618698DC100B30134
321 | 72A2882C18618A2E00DDD30A
322 | 72A2882D18618A2E00DDD30A
323 | 72A2882F18618A2E00DDD30A
324 | 72A2883218618A2E00DDD30A
325 | 72A2883318618A2E00DDD30A
326 | 72A2883518618A2E00DDD30A
327 | 72A2882418618A2E00DDD30A
328 | 72A2885218620EA100DDD30A
329 | 72A2885318620EA100DDD30A
330 |
331 | isa
332 | PBXGroup
333 | path
334 | RWReactivePlayground
335 | sourceTree
336 | <group>
337 |
338 | 72A2882418618A2E00DDD30A
339 |
340 | children
341 |
342 | 72A2882518618A2E00DDD30A
343 | 72A2882618618A2E00DDD30A
344 | 72A2882918618A2E00DDD30A
345 | 72A2882B18618A2E00DDD30A
346 |
347 | isa
348 | PBXGroup
349 | name
350 | Supporting Files
351 | sourceTree
352 | <group>
353 |
354 | 72A2882518618A2E00DDD30A
355 |
356 | isa
357 | PBXFileReference
358 | lastKnownFileType
359 | text.plist.xml
360 | path
361 | RWReactivePlayground-Info.plist
362 | sourceTree
363 | <group>
364 |
365 | 72A2882618618A2E00DDD30A
366 |
367 | children
368 |
369 | 72A2882718618A2E00DDD30A
370 |
371 | isa
372 | PBXVariantGroup
373 | name
374 | InfoPlist.strings
375 | sourceTree
376 | <group>
377 |
378 | 72A2882718618A2E00DDD30A
379 |
380 | isa
381 | PBXFileReference
382 | lastKnownFileType
383 | text.plist.strings
384 | name
385 | en
386 | path
387 | en.lproj/InfoPlist.strings
388 | sourceTree
389 | <group>
390 |
391 | 72A2882818618A2E00DDD30A
392 |
393 | fileRef
394 | 72A2882618618A2E00DDD30A
395 | isa
396 | PBXBuildFile
397 |
398 | 72A2882918618A2E00DDD30A
399 |
400 | isa
401 | PBXFileReference
402 | lastKnownFileType
403 | sourcecode.c.objc
404 | path
405 | main.m
406 | sourceTree
407 | <group>
408 |
409 | 72A2882A18618A2E00DDD30A
410 |
411 | fileRef
412 | 72A2882918618A2E00DDD30A
413 | isa
414 | PBXBuildFile
415 |
416 | 72A2882B18618A2E00DDD30A
417 |
418 | isa
419 | PBXFileReference
420 | lastKnownFileType
421 | sourcecode.c.h
422 | path
423 | RWReactivePlayground-Prefix.pch
424 | sourceTree
425 | <group>
426 |
427 | 72A2882C18618A2E00DDD30A
428 |
429 | isa
430 | PBXFileReference
431 | lastKnownFileType
432 | sourcecode.c.h
433 | path
434 | RWAppDelegate.h
435 | sourceTree
436 | <group>
437 |
438 | 72A2882D18618A2E00DDD30A
439 |
440 | isa
441 | PBXFileReference
442 | lastKnownFileType
443 | sourcecode.c.objc
444 | path
445 | RWAppDelegate.m
446 | sourceTree
447 | <group>
448 |
449 | 72A2882E18618A2E00DDD30A
450 |
451 | fileRef
452 | 72A2882D18618A2E00DDD30A
453 | isa
454 | PBXBuildFile
455 |
456 | 72A2882F18618A2E00DDD30A
457 |
458 | children
459 |
460 | 72A2883018618A2E00DDD30A
461 |
462 | isa
463 | PBXVariantGroup
464 | name
465 | Main.storyboard
466 | sourceTree
467 | <group>
468 |
469 | 72A2883018618A2E00DDD30A
470 |
471 | isa
472 | PBXFileReference
473 | lastKnownFileType
474 | file.storyboard
475 | name
476 | Base
477 | path
478 | Base.lproj/Main.storyboard
479 | sourceTree
480 | <group>
481 |
482 | 72A2883118618A2E00DDD30A
483 |
484 | fileRef
485 | 72A2882F18618A2E00DDD30A
486 | isa
487 | PBXBuildFile
488 |
489 | 72A2883218618A2E00DDD30A
490 |
491 | isa
492 | PBXFileReference
493 | lastKnownFileType
494 | sourcecode.c.h
495 | path
496 | RWViewController.h
497 | sourceTree
498 | <group>
499 |
500 | 72A2883318618A2E00DDD30A
501 |
502 | isa
503 | PBXFileReference
504 | lastKnownFileType
505 | sourcecode.c.objc
506 | path
507 | RWViewController.m
508 | sourceTree
509 | <group>
510 |
511 | 72A2883418618A2E00DDD30A
512 |
513 | fileRef
514 | 72A2883318618A2E00DDD30A
515 | isa
516 | PBXBuildFile
517 |
518 | 72A2883518618A2E00DDD30A
519 |
520 | isa
521 | PBXFileReference
522 | lastKnownFileType
523 | folder.assetcatalog
524 | path
525 | Images.xcassets
526 | sourceTree
527 | <group>
528 |
529 | 72A2883618618A2E00DDD30A
530 |
531 | fileRef
532 | 72A2883518618A2E00DDD30A
533 | isa
534 | PBXBuildFile
535 |
536 | 72A2883718618A2E00DDD30A
537 |
538 | buildActionMask
539 | 2147483647
540 | files
541 |
542 | isa
543 | PBXSourcesBuildPhase
544 | runOnlyForDeploymentPostprocessing
545 | 0
546 |
547 | 72A2883818618A2E00DDD30A
548 |
549 | buildActionMask
550 | 2147483647
551 | files
552 |
553 | 72A2883D18618A2E00DDD30A
554 | 72A2883F18618A2E00DDD30A
555 | 72A2883E18618A2E00DDD30A
556 |
557 | isa
558 | PBXFrameworksBuildPhase
559 | runOnlyForDeploymentPostprocessing
560 | 0
561 |
562 | 72A2883918618A2E00DDD30A
563 |
564 | buildActionMask
565 | 2147483647
566 | files
567 |
568 | isa
569 | PBXResourcesBuildPhase
570 | runOnlyForDeploymentPostprocessing
571 | 0
572 |
573 | 72A2883A18618A2E00DDD30A
574 |
575 | buildConfigurationList
576 | 72A2884F18618A2E00DDD30A
577 | buildPhases
578 |
579 | 72A2883718618A2E00DDD30A
580 | 72A2883818618A2E00DDD30A
581 | 72A2883918618A2E00DDD30A
582 |
583 | buildRules
584 |
585 | dependencies
586 |
587 | 72A2884118618A2E00DDD30A
588 |
589 | isa
590 | PBXNativeTarget
591 | name
592 | RWReactivePlaygroundTests
593 | productName
594 | RWReactivePlaygroundTests
595 | productReference
596 | 72A2883B18618A2E00DDD30A
597 | productType
598 | com.apple.product-type.bundle.unit-test
599 |
600 | 72A2883B18618A2E00DDD30A
601 |
602 | explicitFileType
603 | wrapper.cfbundle
604 | includeInIndex
605 | 0
606 | isa
607 | PBXFileReference
608 | path
609 | RWReactivePlaygroundTests.xctest
610 | sourceTree
611 | BUILT_PRODUCTS_DIR
612 |
613 | 72A2883C18618A2E00DDD30A
614 |
615 | isa
616 | PBXFileReference
617 | lastKnownFileType
618 | wrapper.framework
619 | name
620 | XCTest.framework
621 | path
622 | Library/Frameworks/XCTest.framework
623 | sourceTree
624 | DEVELOPER_DIR
625 |
626 | 72A2883D18618A2E00DDD30A
627 |
628 | fileRef
629 | 72A2883C18618A2E00DDD30A
630 | isa
631 | PBXBuildFile
632 |
633 | 72A2883E18618A2E00DDD30A
634 |
635 | fileRef
636 | 72A2881D18618A2E00DDD30A
637 | isa
638 | PBXBuildFile
639 |
640 | 72A2883F18618A2E00DDD30A
641 |
642 | fileRef
643 | 72A2882118618A2E00DDD30A
644 | isa
645 | PBXBuildFile
646 |
647 | 72A2884018618A2E00DDD30A
648 |
649 | containerPortal
650 | 72A2881218618A2E00DDD30A
651 | isa
652 | PBXContainerItemProxy
653 | proxyType
654 | 1
655 | remoteGlobalIDString
656 | 72A2881918618A2E00DDD30A
657 | remoteInfo
658 | RWReactivePlayground
659 |
660 | 72A2884118618A2E00DDD30A
661 |
662 | isa
663 | PBXTargetDependency
664 | target
665 | 72A2881918618A2E00DDD30A
666 | targetProxy
667 | 72A2884018618A2E00DDD30A
668 |
669 | 72A2884A18618A2E00DDD30A
670 |
671 | buildSettings
672 |
673 | ALWAYS_SEARCH_USER_PATHS
674 | NO
675 | ARCHS
676 | $(ARCHS_STANDARD_INCLUDING_64_BIT)
677 | CLANG_CXX_LANGUAGE_STANDARD
678 | gnu++0x
679 | CLANG_CXX_LIBRARY
680 | libc++
681 | CLANG_ENABLE_MODULES
682 | YES
683 | CLANG_ENABLE_OBJC_ARC
684 | YES
685 | CLANG_WARN_BOOL_CONVERSION
686 | YES
687 | CLANG_WARN_CONSTANT_CONVERSION
688 | YES
689 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE
690 | YES_ERROR
691 | CLANG_WARN_EMPTY_BODY
692 | YES
693 | CLANG_WARN_ENUM_CONVERSION
694 | YES
695 | CLANG_WARN_INT_CONVERSION
696 | YES
697 | CLANG_WARN_OBJC_ROOT_CLASS
698 | YES_ERROR
699 | CLANG_WARN__DUPLICATE_METHOD_MATCH
700 | YES
701 | CODE_SIGN_IDENTITY[sdk=iphoneos*]
702 | iPhone Developer
703 | COPY_PHASE_STRIP
704 | NO
705 | GCC_C_LANGUAGE_STANDARD
706 | gnu99
707 | GCC_DYNAMIC_NO_PIC
708 | NO
709 | GCC_OPTIMIZATION_LEVEL
710 | 0
711 | GCC_PREPROCESSOR_DEFINITIONS
712 |
713 | DEBUG=1
714 | $(inherited)
715 |
716 | GCC_SYMBOLS_PRIVATE_EXTERN
717 | NO
718 | GCC_WARN_64_TO_32_BIT_CONVERSION
719 | YES
720 | GCC_WARN_ABOUT_RETURN_TYPE
721 | YES_ERROR
722 | GCC_WARN_UNDECLARED_SELECTOR
723 | YES
724 | GCC_WARN_UNINITIALIZED_AUTOS
725 | YES
726 | GCC_WARN_UNUSED_FUNCTION
727 | YES
728 | GCC_WARN_UNUSED_VARIABLE
729 | YES
730 | IPHONEOS_DEPLOYMENT_TARGET
731 | 7.0
732 | ONLY_ACTIVE_ARCH
733 | YES
734 | SDKROOT
735 | iphoneos
736 |
737 | isa
738 | XCBuildConfiguration
739 | name
740 | Debug
741 |
742 | 72A2884B18618A2E00DDD30A
743 |
744 | buildSettings
745 |
746 | ALWAYS_SEARCH_USER_PATHS
747 | NO
748 | ARCHS
749 | $(ARCHS_STANDARD_INCLUDING_64_BIT)
750 | CLANG_CXX_LANGUAGE_STANDARD
751 | gnu++0x
752 | CLANG_CXX_LIBRARY
753 | libc++
754 | CLANG_ENABLE_MODULES
755 | YES
756 | CLANG_ENABLE_OBJC_ARC
757 | YES
758 | CLANG_WARN_BOOL_CONVERSION
759 | YES
760 | CLANG_WARN_CONSTANT_CONVERSION
761 | YES
762 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE
763 | YES_ERROR
764 | CLANG_WARN_EMPTY_BODY
765 | YES
766 | CLANG_WARN_ENUM_CONVERSION
767 | YES
768 | CLANG_WARN_INT_CONVERSION
769 | YES
770 | CLANG_WARN_OBJC_ROOT_CLASS
771 | YES_ERROR
772 | CLANG_WARN__DUPLICATE_METHOD_MATCH
773 | YES
774 | CODE_SIGN_IDENTITY[sdk=iphoneos*]
775 | iPhone Developer
776 | COPY_PHASE_STRIP
777 | YES
778 | ENABLE_NS_ASSERTIONS
779 | NO
780 | GCC_C_LANGUAGE_STANDARD
781 | gnu99
782 | GCC_WARN_64_TO_32_BIT_CONVERSION
783 | YES
784 | GCC_WARN_ABOUT_RETURN_TYPE
785 | YES_ERROR
786 | GCC_WARN_UNDECLARED_SELECTOR
787 | YES
788 | GCC_WARN_UNINITIALIZED_AUTOS
789 | YES
790 | GCC_WARN_UNUSED_FUNCTION
791 | YES
792 | GCC_WARN_UNUSED_VARIABLE
793 | YES
794 | IPHONEOS_DEPLOYMENT_TARGET
795 | 7.0
796 | SDKROOT
797 | iphoneos
798 | VALIDATE_PRODUCT
799 | YES
800 |
801 | isa
802 | XCBuildConfiguration
803 | name
804 | Release
805 |
806 | 72A2884C18618A2E00DDD30A
807 |
808 | buildConfigurations
809 |
810 | 72A2884D18618A2E00DDD30A
811 | 72A2884E18618A2E00DDD30A
812 |
813 | defaultConfigurationIsVisible
814 | 0
815 | defaultConfigurationName
816 | Release
817 | isa
818 | XCConfigurationList
819 |
820 | 72A2884D18618A2E00DDD30A
821 |
822 | baseConfigurationReference
823 | 3BF9C92AA2B44B05B25FF647
824 | buildSettings
825 |
826 | ASSETCATALOG_COMPILER_APPICON_NAME
827 | AppIcon
828 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME
829 | LaunchImage
830 | GCC_PRECOMPILE_PREFIX_HEADER
831 | YES
832 | GCC_PREFIX_HEADER
833 | RWReactivePlayground/RWReactivePlayground-Prefix.pch
834 | INFOPLIST_FILE
835 | RWReactivePlayground/RWReactivePlayground-Info.plist
836 | PRODUCT_NAME
837 | $(TARGET_NAME)
838 | WRAPPER_EXTENSION
839 | app
840 |
841 | isa
842 | XCBuildConfiguration
843 | name
844 | Debug
845 |
846 | 72A2884E18618A2E00DDD30A
847 |
848 | baseConfigurationReference
849 | 3BF9C92AA2B44B05B25FF647
850 | buildSettings
851 |
852 | ASSETCATALOG_COMPILER_APPICON_NAME
853 | AppIcon
854 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME
855 | LaunchImage
856 | GCC_PRECOMPILE_PREFIX_HEADER
857 | YES
858 | GCC_PREFIX_HEADER
859 | RWReactivePlayground/RWReactivePlayground-Prefix.pch
860 | INFOPLIST_FILE
861 | RWReactivePlayground/RWReactivePlayground-Info.plist
862 | PRODUCT_NAME
863 | $(TARGET_NAME)
864 | WRAPPER_EXTENSION
865 | app
866 |
867 | isa
868 | XCBuildConfiguration
869 | name
870 | Release
871 |
872 | 72A2884F18618A2E00DDD30A
873 |
874 | buildConfigurations
875 |
876 | 72A2885018618A2E00DDD30A
877 | 72A2885118618A2E00DDD30A
878 |
879 | defaultConfigurationIsVisible
880 | 0
881 | defaultConfigurationName
882 | Release
883 | isa
884 | XCConfigurationList
885 |
886 | 72A2885018618A2E00DDD30A
887 |
888 | buildSettings
889 |
890 | ARCHS
891 | $(ARCHS_STANDARD_INCLUDING_64_BIT)
892 | BUNDLE_LOADER
893 | $(BUILT_PRODUCTS_DIR)/RWReactivePlayground.app/RWReactivePlayground
894 | FRAMEWORK_SEARCH_PATHS
895 |
896 | $(SDKROOT)/Developer/Library/Frameworks
897 | $(inherited)
898 | $(DEVELOPER_FRAMEWORKS_DIR)
899 |
900 | GCC_PRECOMPILE_PREFIX_HEADER
901 | YES
902 | GCC_PREFIX_HEADER
903 | RWReactivePlayground/RWReactivePlayground-Prefix.pch
904 | GCC_PREPROCESSOR_DEFINITIONS
905 |
906 | DEBUG=1
907 | $(inherited)
908 |
909 | INFOPLIST_FILE
910 | RWReactivePlaygroundTests/RWReactivePlaygroundTests-Info.plist
911 | PRODUCT_NAME
912 | $(TARGET_NAME)
913 | TEST_HOST
914 | $(BUNDLE_LOADER)
915 | WRAPPER_EXTENSION
916 | xctest
917 |
918 | isa
919 | XCBuildConfiguration
920 | name
921 | Debug
922 |
923 | 72A2885118618A2E00DDD30A
924 |
925 | buildSettings
926 |
927 | ARCHS
928 | $(ARCHS_STANDARD_INCLUDING_64_BIT)
929 | BUNDLE_LOADER
930 | $(BUILT_PRODUCTS_DIR)/RWReactivePlayground.app/RWReactivePlayground
931 | FRAMEWORK_SEARCH_PATHS
932 |
933 | $(SDKROOT)/Developer/Library/Frameworks
934 | $(inherited)
935 | $(DEVELOPER_FRAMEWORKS_DIR)
936 |
937 | GCC_PRECOMPILE_PREFIX_HEADER
938 | YES
939 | GCC_PREFIX_HEADER
940 | RWReactivePlayground/RWReactivePlayground-Prefix.pch
941 | INFOPLIST_FILE
942 | RWReactivePlaygroundTests/RWReactivePlaygroundTests-Info.plist
943 | PRODUCT_NAME
944 | $(TARGET_NAME)
945 | TEST_HOST
946 | $(BUNDLE_LOADER)
947 | WRAPPER_EXTENSION
948 | xctest
949 |
950 | isa
951 | XCBuildConfiguration
952 | name
953 | Release
954 |
955 | 72A2885218620EA100DDD30A
956 |
957 | fileEncoding
958 | 4
959 | isa
960 | PBXFileReference
961 | lastKnownFileType
962 | sourcecode.c.h
963 | path
964 | RWDummySignInService.h
965 | sourceTree
966 | <group>
967 |
968 | 72A2885318620EA100DDD30A
969 |
970 | fileEncoding
971 | 4
972 | isa
973 | PBXFileReference
974 | lastKnownFileType
975 | sourcecode.c.objc
976 | path
977 | RWDummySignInService.m
978 | sourceTree
979 | <group>
980 |
981 | 72A2885418620EA100DDD30A
982 |
983 | fileRef
984 | 72A2885318620EA100DDD30A
985 | isa
986 | PBXBuildFile
987 |
988 | 790202DB2DB5410F96E90070
989 |
990 | buildActionMask
991 | 2147483647
992 | files
993 |
994 | inputPaths
995 |
996 | isa
997 | PBXShellScriptBuildPhase
998 | name
999 | Copy Pods Resources
1000 | outputPaths
1001 |
1002 | runOnlyForDeploymentPostprocessing
1003 | 0
1004 | shellPath
1005 | /bin/sh
1006 | shellScript
1007 | "${SRCROOT}/Pods/Pods-resources.sh"
1008 |
1009 | showEnvVarsInLog
1010 | 0
1011 |
1012 | 984FCCAD77574686877BDB16
1013 |
1014 | fileRef
1015 | 08A3AF6F6456432C9561F244
1016 | isa
1017 | PBXBuildFile
1018 |
1019 | F9535506389D4058AFB78394
1020 |
1021 | buildActionMask
1022 | 2147483647
1023 | files
1024 |
1025 | inputPaths
1026 |
1027 | isa
1028 | PBXShellScriptBuildPhase
1029 | name
1030 | Check Pods Manifest.lock
1031 | outputPaths
1032 |
1033 | runOnlyForDeploymentPostprocessing
1034 | 0
1035 | shellPath
1036 | /bin/sh
1037 | shellScript
1038 | diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
1039 | if [[ $? != 0 ]] ; then
1040 | cat << EOM
1041 | error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
1042 | EOM
1043 | exit 1
1044 | fi
1045 |
1046 | showEnvVarsInLog
1047 | 0
1048 |
1049 |
1050 | rootObject
1051 | 72A2881218618A2E00DDD30A
1052 |
1053 |
1054 |
--------------------------------------------------------------------------------
/RWReactivePlayground.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RWReactivePlayground.xcodeproj/xcuserdata/ceberhardt.xcuserdatad/xcschemes/RWReactivePlayground.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
61 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
79 |
80 |
86 |
87 |
88 |
89 |
91 |
92 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/RWReactivePlayground.xcodeproj/xcuserdata/ceberhardt.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | RWReactivePlayground.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 72A2881918618A2E00DDD30A
16 |
17 | primary
18 |
19 |
20 | 72A2883A18618A2E00DDD30A
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/RWReactivePlayground.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/RWReactivePlayground/Base.lproj/Main.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 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
53 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
--------------------------------------------------------------------------------
/RWReactivePlayground/Images.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" : "40x40",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "60x60",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/RWReactivePlayground/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "subtype" : "retina4",
14 | "extent" : "full-screen",
15 | "minimum-system-version" : "7.0",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/RWReactivePlayground/RWAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // RWAppDelegate.h
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RWAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // RWAppDelegate.m
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import "RWAppDelegate.h"
10 |
11 | @implementation RWAppDelegate
12 |
13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 | {
15 | // style the navigation bar
16 | UIColor* navColor = [UIColor colorWithRed:0.175f green:0.458f blue:0.831f alpha:1.0f];
17 | [[UINavigationBar appearance] setBarTintColor:navColor];
18 | [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
19 | [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
20 |
21 | // make the status bar white
22 | [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
23 |
24 |
25 | return YES;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWDummySignInService.h:
--------------------------------------------------------------------------------
1 | //
2 | // RWDummySignInService.h
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef void (^RWSignInResponse)(BOOL);
12 |
13 | @interface RWDummySignInService : NSObject
14 |
15 | - (void)signInWithUsername:(NSString *)username password:(NSString *)password complete:(RWSignInResponse)completeBlock;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWDummySignInService.m:
--------------------------------------------------------------------------------
1 | //
2 | // RWDummySignInService.m
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import "RWDummySignInService.h"
10 |
11 | @implementation RWDummySignInService
12 |
13 |
14 | - (void)signInWithUsername:(NSString *)username password:(NSString *)password complete:(RWSignInResponse)completeBlock {
15 |
16 | [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
17 | double delayInSeconds = 2.0;
18 | dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
19 | dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
20 | [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
21 | BOOL success = [username isEqualToString:@"user"] && [password isEqualToString:@"password"];
22 | completeBlock(success);
23 | });
24 | }
25 |
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWReactivePlayground-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.razeware.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWReactivePlayground-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_5_0
10 | #warning "This project uses features only available in iOS SDK 5.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #endif
17 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // RWViewController.h
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RWViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/RWReactivePlayground/RWViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // RWViewController.m
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import "RWViewController.h"
10 | #import "RWDummySignInService.h"
11 | #import
12 |
13 | @interface RWViewController ()
14 |
15 | @property (weak, nonatomic) IBOutlet UITextField *usernameTextField;
16 | @property (weak, nonatomic) IBOutlet UITextField *passwordTextField;
17 | @property (weak, nonatomic) IBOutlet UIButton *signInButton;
18 | @property (weak, nonatomic) IBOutlet UILabel *signInFailureText;
19 |
20 | @property (strong, nonatomic) RWDummySignInService *signInService;
21 |
22 | @end
23 |
24 | @implementation RWViewController
25 |
26 | - (void)viewDidLoad {
27 | [super viewDidLoad];
28 |
29 | self.signInService = [RWDummySignInService new];
30 |
31 | // initially hide the failure message
32 | self.signInFailureText.hidden = YES;
33 |
34 |
35 | RACSignal *validUsernameSignal =
36 | [self.usernameTextField.rac_textSignal
37 | map:^id(NSString *text) {
38 | return @([self isValidUsername:text]);
39 | }];
40 |
41 | RACSignal *validPasswordSignal =
42 | [self.passwordTextField.rac_textSignal
43 | map:^id(NSString *text) {
44 | return @([self isValidPassword:text]);
45 | }];
46 |
47 | RAC(self.passwordTextField, backgroundColor) =
48 | [validPasswordSignal
49 | map:^id(NSNumber *passwordValid) {
50 | return [passwordValid boolValue] ? [UIColor clearColor] : [UIColor yellowColor];
51 | }];
52 |
53 | RAC(self.usernameTextField, backgroundColor) =
54 | [validUsernameSignal
55 | map:^id(NSNumber *passwordValid) {
56 | return [passwordValid boolValue] ? [UIColor clearColor] : [UIColor yellowColor];
57 | }];
58 |
59 |
60 | RACSignal *signUpActiveSignal =
61 | [RACSignal combineLatest:@[validUsernameSignal, validPasswordSignal]
62 | reduce:^id(NSNumber *usernameValid, NSNumber *passwordValid) {
63 | return @([usernameValid boolValue] && [passwordValid boolValue]);
64 | }];
65 |
66 | [signUpActiveSignal subscribeNext:^(NSNumber *signupActive) {
67 | self.signInButton.enabled = [signupActive boolValue];
68 | }];
69 |
70 | [[[[self.signInButton
71 | rac_signalForControlEvents:UIControlEventTouchUpInside]
72 | doNext:^(id x) {
73 | self.signInButton.enabled = NO;
74 | self.signInFailureText.hidden = YES;
75 | }]
76 | flattenMap:^id(id x) {
77 | return [self signInSignal];
78 | }]
79 | subscribeNext:^(NSNumber *signedIn) {
80 | self.signInButton.enabled = YES;
81 | BOOL success = [signedIn boolValue];
82 | self.signInFailureText.hidden = success;
83 | if (success) {
84 | [self performSegueWithIdentifier:@"signInSuccess" sender:self];
85 | }
86 | }];
87 | }
88 |
89 | - (BOOL)isValidUsername:(NSString *)username {
90 | return username.length > 3;
91 | }
92 |
93 | - (BOOL)isValidPassword:(NSString *)password {
94 | return password.length > 3;
95 | }
96 |
97 | -(RACSignal *)signInSignal {
98 | return [RACSignal createSignal:^RACDisposable *(id subscriber) {
99 | [self.signInService
100 | signInWithUsername:self.usernameTextField.text
101 | password:self.passwordTextField.text
102 | complete:^(BOOL success) {
103 | [subscriber sendNext:@(success)];
104 | [subscriber sendCompleted];
105 | }];
106 | return nil;
107 | }];
108 | }
109 |
110 |
111 | @end
112 |
--------------------------------------------------------------------------------
/RWReactivePlayground/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/RWReactivePlayground/kitten.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ColinEberhardt/RWReactivePlayground/dbd9296d38c3edbad9ae357c6af7f156edbd45a2/RWReactivePlayground/kitten.jpg
--------------------------------------------------------------------------------
/RWReactivePlayground/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // RWReactivePlayground
4 | //
5 | // Created by Colin Eberhardt on 18/12/2013.
6 | // Copyright (c) 2013 Colin Eberhardt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "RWAppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([RWAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ReactivePlaygroundStarter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ColinEberhardt/RWReactivePlayground/dbd9296d38c3edbad9ae357c6af7f156edbd45a2/ReactivePlaygroundStarter.jpg
--------------------------------------------------------------------------------