Just play with swift in 101 days. Yep, My goal in this project is to wanna try coding trick, and design pattern in swift.
-
2015-09-28 - Day 101
- Play with the reduce extension method from standard swift library.
-
2015-09-29 - Day 100
- Design patterns in swift - Object Template Pattern.
-
2015-09-30 - Day 99
- Design patterns in swift - Prototype Pattern.
-
2015-10-02 - Day 98
- Design patterns in swift - Singleton Pattern for my birthday.
- Me is only one object :D
- Real word example. CLLocationManager Singleton in Swift
-
2015-10-03 - Day 97
- Swift Extension - New functionality to an existing class
- Try on Double, String
- Research from : The Swift Programming Language(Extension)
-
2015-10-04 - Day 96
- Swift Closures - Self-contained blocks of functionality
- Try on sort object
- Research from : The Swift Programming Language(Closures)
-
2015-10-06 - Day 95
- Swift Enumerations - defines a common type for a group of related values and enables you to work with those values in a type-safe way
- Try on implicitly assigned raw values
- Research from : The Swift Programming Language(Enumerations)
-
2015-10-09 - Day 94
- Swift Optional Chaining - process for querying and calling properties, methods, and subscripts on an optional that might currently be nil
- Optional Chaining as an Alternative to Forced Unwrapping
- Research from : The Swift Programming Language(Optional Chaining)
-
2015-10-11 - Day 93
- Swift Tuples - Tuples are anonymous structs that can be used in many ways, and one of them is to make returning multiple values from a function much easier.
- Unnamed Tuples/Named Tuples
- Research from :
- The Swift Programming Language(Tuple Type)
- Raywenderlich
- Stackoverflow
-
2015-10-12 - Day 92
- Xcode 7 Playground - Import your class into XCODE 7 Playground
- Try import your custom class to test in playground
- Resources : With the resource bundle, you can easily add images, sounds, and other data to your playground using the project navigator.
- Research from : New Features in Xcode 7
-
2015-10-13 - Day 91
- Strings in Swift 2 (Collection of Character Values)
- Natural to model a string as a collection of characters.
- Research from : Strings in Swift 2
-
2015-10-14 - Day 90
- UIKit on playground
-
2015-10-15 - Day 89
- Collection Types in Swift 2 [Sets]
- Stores distinct values of the same type in a collection with no defined ordering.
- Research from : Sets in Swift 2
-
2015-10-16 - Day 88
- Realm + Swift (Part.1)
- Mobile database instead of core data in iOS.
- Research from : Realm Swift 0.96.0
- Example project on github : TA-DA (To-Do list app)
-
2015-10-18 - Day 87
- Realm + Swift (Part.2)
- Add object to database and show in tableview.
- Research from : Realm Swift 0.96.0
- Example project on github : TA-DA (To-Do list app)
-
2015-10-19 - Day 86
- Realm + Swift (Part.3)
- Update/Edit object and show status in tableview.
- Research from : Realm Swift - Updating objects
- Example project on github : TA-DA (To-Do list app)
-
2015-10-20 - Day 85
- Realm + Swift (Part.4)
- Filtering object with NSPredicate.
- Research from : Realm Swift - Filtering objects
- Example project on github : TA-DA (To-Do list app)
-
2015-10-21 - Day 84
- Realm + Swift (Part.5)
- Sorting object with sorted function.
- Research from : Realm Swift - Sorting objects
- Example project on github : TA-DA (To-Do list app)
-
2015-10-(23-24) - Day 83 - Day 82
-
2015-10-27 - Day 81
- Basic animation in Swift
- Try to use animateWithDuration function to control UIView transition
-
2015-10-28 - Day 80
- Basic Spring Animations
- Try to use animateWithDuration using spring with damping style
- usingSpringWithDamping : Controls amount of damping applied to the animation. Values closer to 0.0 create a bouncier animation, while values closer to 1.0 create a stiff-looking effect.
- initialSpringVelocity : Controls the initial velocity of the animation. Bigger and smaller values will cause the animation to have more or less velocity.
-
2015-10-29 - Day 79
- Animation Transitions
- Try to adding a new view, to animate the addition of a new view on the screen.
- transitionWithView : new view add to it as subviews appear while animation run.
-
2015-10-30 - Day 78
- Animation Transitions (Hide/Show/Fade-in/Fade-Out)
- Try to hiding/fade-in/out a new view, to animate the addition of a new view on the screen.
- use property view.hidden = true/false for show/hidden view
- use property view.alpha = 0 to 1 for control transparency 0(invisible), 1(visible)
-
2015-10-31 - Day 77
- Animation with CGAffineTransformMakeScale and CGAffineTransformMakeTranslation
- CGAffineTransformMakeScale : Returns an affine transformation matrix constructed from scaling values you provide
- CGAffineTransformMakeTranslation : Returns an affine transformation matrix constructed from translation values you provide.
- Research from : CGAffineTransform Reference
-
2015-11-01 - Day 76
- Animation with CGAffineTransformRotate and CGAffineTransformInvert
- CGAffineTransformRotate : Returns an affine transformation matrix constructed by rotating an existing affine transform.
- Returns an affine transformation matrix constructed by inverting an existing affine transform.
- Research from : CGAffineTransform Reference
-
2015-11-02 - Day 75
- Animation with CGPointApplyAffineTransform
- CGPointApplyAffineTransform : Returns the point resulting from an affine transformation of an existing point.
- Research from : CGAffineTransform Reference
-
2015-11-03 - Day 74
- Animation with CGSizeApplyAffineTransform
- CGSizeApplyAffineTransform : Returns the height and width resulting from a transformation of an existing height and width.
- Research from : CGAffineTransform Reference
-
2015-11-04 - Day 73
- Animation with CGRectApplyAffineTransform
- CGRectApplyAffineTransform : Applies an affine transform to a rectangle.
- Research from : CGAffineTransform Reference
-
2015-11-05 - Day 72
- Evaluating Affine Transforms : CGAffineTransformIsIdentity
- CGAffineTransformIsIdentity : Checks whether an affine transform is the identity transform.
- Research from : CGAffineTransform Reference
-
2015-11-06 - Day 71
- Evaluating Affine Transforms : CGAffineTransformEqualToTransform
- CGAffineTransformEqualToTransform : Checks whether two affine transforms are equal.
- Research from : CGAffineTransform Reference
-
2015-11-07 - Day 70
- ReactiveCocoa with Swift 2.0 : Play with Signal + UITextField
- Try to get signal from UITextField by rac_textSignal, So nice! now we don't need UITextField Delegate becuase we have a useful signal.
- Example project on github : ReactiveCocoa with Swift 2.0
-
2015-11-08 - Day 69
- ReactiveCocoa with Swift 2.0 : Play with Signal + UITextField + Filtering
- Try to add filter operator is used to only include values in an event stream that satisfy a predicate.
- In this case i'm try is search string has more than 3 character, filter operator will alow and go to startWithNext.
- Example project on github : ReactiveCocoa with Swift 2.0
-
2015-11-09 - Day 68
- ReactiveCocoa with Swift 2.0 : Play with Signal + UIButton + handle action
- Try to add methods from ReactiveCocoa adds to UIKit, rac_signalForControlEvents.
- And add some feature with doNext operator, like when user pressed UIButton button will disable and change alpha.
- Example project on github : ReactiveCocoa with Swift 2.0
-
2015-11-10 - Day 67
- Control Flow : Loops - loops to perform a task multiple times
- for-loop
- while-loop
- repeat-loop
- Research from : Control flow in Swift
-
2015-11-11 - Day 66
- Control Flow : if, if-else, switch, interval matching
- Conditional Statements : It is often useful to execute different pieces of code based on certain conditions.
- Research from : Control flow in Swift
-
2015-11-12 - Day 65
- Defining and Calling Functions
- Without parameter & Without return.
- Without parameter & return value.
- With parameter & Without return.
- With parameter & With return.
- With multiple parameters.
- Research from : Defining and Calling Functions
-
2015-11-13 - Day 64
- UITest in Swift
- Introduces UI testing as a major new feature of the existing XCTest framework.
- Step 1 : Open the Test Navigator
- Step 2 : Click run button on testLoginForm()
- Research from : Testing-with-xcode-7-and-swift-2
-
2015-11-14 - Day 63
- XCTest in Swift
- Introduces XCTAssertEqual feature of the existing XCTest framework.
- Step 1 : Open the Test Navigator
- Step 2 : Click run button on testGetAddressFullDetail()
- Research from : Testing-with-xcode-7-and-swift-2
-
2015-11-15 - Day 62
- Adding blur effects to UIImageView
- Try to adding UIBlurEffect to UIImageView with UIVisualEffectView.
enum UIBlurEffectStyle : Int {
case ExtraLight
case Light
case Dark
}
-
2015-11-16 - Day 61
- Core Location in swift
- Try to find the user's location.
- NSLocationWhenInUseUsageDescription : Include this key when your app uses location services to track the user’s current location directly.
- NSLocationAlwaysUsageDescription : Include this key when your app uses location services in a potentially nonobvious way while running in the foreground or the background.
- Research from : Getting the User’s Location
- Research from : CocoaKeys
-
2015-11-17 - Day 60
- TO-DO App with ReactiveCocoa and Realm - Part 1
- Initial Project TODO(Model,View,ViewModel)
- Research from : ReactiveCocoa MVVM Introduction
- Research from : Why ReactiveCocoa
- Example Project : TODO-MVVM
-
2015-11-18 - Day 59
- TO-DO App with ReactiveCocoa and Realm - Part 2
- Add SnapKit and ReactiveRealm
- Update TODO View Model
- Example Project : TODO-MVVM
-
2015-11-19 - Day 58
- 3D Touch Shortcut in swift
- Support in iOS9 SDK
- If you minimum is under iOS9 please check version first!!!
- Research from : Apple doc - 3D Touch
-
2015-11-20 - Day 57
- Adding gravity to UIView
- A UIGravityBehavior object applies a gravity-like force to all of its associated dynamic items.
- Research from : Apple doc - UIGravityBehavior
-
2015-11-21 - Day 56
- Adding boundaries and collision animation
- A collision behavior confers, to a specified array of dynamic items, the ability of those items to engage in collisions with each other and with the behavior’s specified boundaries.
- Research from : Apple doc - UICollisionBehavior
-
2015-11-22 - Day 55
- UIDynamic Collision and item properties(Elasticity)
- Research from : Apple doc - UICollisionBehavior
-
2015-11-23 - Day 54
- Draw Circle with UIBezierPath
- Research from : Apple doc - UIBezierPath
-
2015-11-24 - Day 53
- RxSwift: ReactiveX for Swift
- Research from : RxSwift
-
2015-11-25 - Day 52
- ReactiveCocoa vs RxSwift
- Research from : Which one ?
-
2015-11-26 - Day 51
- SnapKit : Easy Auto Layout Constraints Programmatically
- try to adjust 2 UIView with auto layout
- Research from : SnapKit
-
2015-11-27 - Day 50
- SnapKit : Create Login View
- Try to create login view by snapkit
- Research from : SnapKit
-
2015-11-28 - Day 49
- SnapKit : Inset, Offset
- Try to use UIEdgeInsetsMake with view by snapkit
- Research from : SnapKit
- Research from : UIEdgeInsetsMake
-
2015-11-29 - Day 48
- SnapKit : Update/Remove Constraint
- Try to update constraint and remove(uninstall) constraint
- Research from : SnapKit
-
2015-11-30 - Day 47
- SnapKit : Align Top/Bottom/Left/Right
- Alignment view with superview
- Research from : SnapKit
-
2015-12-01 - Day 46
- Extension : URL escaped string
- Research from : Extensions
-
2015-12-02 - Day 45
- Extension : Init UIColor by Red/Green/Blue
- Research from : Extensions
-
2015-12-04 - Day 44
- Extension : Int extension find ten percent of your value
- Research from : Extensions
-
2015-12-05 - Day 43
- SFSafariViewController
- Research from : SFSafariViewController
- Research from : Video from WWDC2015
-
2015-12-06 - Day 42
- Swift in Practice
- Manually check if a method is available
- Adopting new APIs while deploying back
- Compile-time API availability checking (it very nice feature)
- Expressing conditional logic (guard)
- Enforcing application constraints
- Asset catalog identifiers
- Assetidentifier enum benefits
- Research from : Video from WWDC2015
-
2015-12-07 - Day 41
- Cocoa Touch Best Practices
- Agenda
- App lifecycle
- Views and View Controllers
- Auto Layout
- Table and Collection Views
- Goal
- Performance
- User Experience
- Future Proofing
- Research from : Video from WWDC2015
-
2015-12-08 - Day 40
- What's New in Notifications
- iOS Notifications
- Silent Notifications
- User Notifications
- Actions
- Text input (New)
- APNS
- Research from : Video from WWDC2015
-
2015-12-09 - Day 39
- Building Better Apps with Value Types in Swift
- Roadmap
- Reference semantics
- Immutability
- Value semantics
- Value types in practice
- Mixing value types and reference types
- Research from : Video from WWDC2015
-
2015-12-10 - Day 38
- What's new in core data
- Object graph management
- Automatic graph management
- NSFetchRequest
- Multi-Writer conflict handling
- Research from : Video from WWDC2015
-
2015-12-11 - Day 37
- What's new in core image
- Filters
- Metal
- Detectors
- Color management
- Kernel class and language
- Research from : Video from WWDC2015
-
2015-12-12 - Day 36
- SSKeychain with Swift
- Set keychain password
- Research from : SSKeychain
-
2015-12-13 - Day 35
- SSKeychain with Swift - Get account from your service
- Research from : SSKeychain
-
2015-12-14 - Day 34
- SSKeychain with Swift - Get password from account
- Research from : SSKeychain
-
2015-12-15 - Day 33
- SSKeychain with Swift - Delelte password from account
- Research from : SSKeychain
-
2015-12-16 - Day 32
- AFNetworking : POST Method
- Research from : AFNetworking
-
2015-12-17 - Day 31
- AFNetworking : GET Method
- Research from : AFNetworking
-
2015-12-18 - Day 30
- AFNetworking : PATCH Method
- Research from : AFNetworking
-
2015-12-19 - Day 29
- AFNetworking : PUT Method
- Research from : AFNetworking
-
2015-12-20 - Day 28
- AFNetworking : DELETE Method
- Research from : AFNetworking
-
2015-12-21 - Day 27
- Documentation in Swift(Comments)
- Research from : NSHipster
-
2015-12-22 - Day 26
- Check Prefix, Suffix in String
- String.hasPrefix -> Bool
- String.hasSuffix -> Bool
-
2015-12-23 - Day 25
- Type Alias in Swift
- Research from : Declarations
-
2015-12-24 - Day 24
- Didset : Stored Variable Observers and Property Observers
- Research from : Declarations
-
2015-12-25 - Day 23
- Three computed properties case of the string
- Capitalized String : myString.capitalizedString
- Lowercase String : myString.lowercaseString
- Uppercase String : myString.uppercaseString
-
2015-12-26 - Day 22
- willSet : Stored Variable Observers and Property Observers
- A willSet observer is called just before the value of the variable or property is set.
- Research from : Declarations
-
2015-12-27 - Day 21
- Making bulk changes to an array in Swift
- myArray[1...3] = [a,b,c]
-
2015-12-28 - Day 20
- The sortInPlace algorithm sorts the array in place.
- myArray.sortInPlace(){ $0 < $1 }
-
2015-12-29 - Day 19
- The sort algorithm sorts the array
- let arraySorted = myArray.sort(){ $0 < $1 }
-
2015-12-30 - Day 18
- The filter algorithm will return a new array by filtering the original array.
- let filtered = myArray.filter{$0 > 5 && $0 < 7}
-
2015-12-31 - Day 17
- Functional Reactive Programming with RxSwift
- Research from : Realm.io - RxSwift
-
2016-01-01 - Day 16
- Network abstraction layer written in Swift
- Research from : Moya
-
2016-01-02 - Day 15
- The map algorithm returns a new array that contains the results of applying the rules in the closure to each element of the array.
- let applied = oldArray.map{ $0 / 10}
-
2016-01-03 - Day 14
- The map algorithm(Array) part-2
- let applied = oldArray.map{ "number is : ($0)" }
-
2016-01-04 - Day 13
- The enumerate method
- for (index,value) in myArray.enumerate() { print("(index) - (value)") }
-
2016-01-05 - Day 12
- Check string contains another string
- mainString.containsString(checkString)
-
2016-01-06 - Day 11
- NSDate extension : begin of day and end of day
- NSDate().beginningOfDay
- NSDate().endOfDay
- Research from : stackoverflow
-
2016-01-07 - Day 10
- Set : Generic collection in Swift
- Initializes, Insert, Remove, Count
- Research from : Set in Swift
-
2016-01-08 - Day 9
- Set : Operations
- Union, Subtract, Intersect, ExclusiveOr
- Research from : Set in Swift
-
2016-01-09 - Day 8
- Control-Flow
- for-case, for-case with where statement
-
2016-01-10 - Day 7
- Control-Flow
- Continue and Break statement
-
2016-01-11 - Day 6
- Control-Flow
- Guard statement
-
2016-01-12 - Day 5
- Protocol in Swift
- Research from : Protocol
-
2016-01-13 - Day 4
- Optional Protocols in Swift
- Research from : Protocol
-
2016-01-14 - Day 3
- Delegation in Swift
- Research from : Protocol
-
2016-01-15 - Day 2
- Protocol Inheritance in Swift
- Research from : Protocol
-
2016-01-16 - Day 1
- Hello World
Anak Mirasing