Skip to content

Just play with swift in 101 days. Yep, My goal in this project is to wanna try coding trick, and design pattern in swift.

License

Notifications You must be signed in to change notification settings

igroomgrim/swift101

Repository files navigation

Swift in 101 Days.

Just play with swift in 101 days. Yep, My goal in this project is to wanna try coding trick, and design pattern in swift.

Back to the Future

  • 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

  • 2015-10-03 - Day 97

  • 2015-10-04 - Day 96

  • 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

  • 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

  • 2015-10-18 - Day 87

  • 2015-10-19 - Day 86

  • 2015-10-20 - Day 85

  • 2015-10-21 - Day 84

  • 2015-10-(23-24) - Day 83 - Day 82

    • I went to The 1st iOS Conference in Singapore. It was very nice all sessions.
    • I'll update all of detail to my blog again in coming soon
    • alt tag
  • 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

  • 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

  • 2015-11-23 - Day 54

  • 2015-11-24 - Day 53

    • RxSwift: ReactiveX for Swift
    • Research from : RxSwift
  • 2015-11-25 - Day 52

  • 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

  • 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

  • 2015-12-17 - Day 31

  • 2015-12-18 - Day 30

  • 2015-12-19 - Day 29

  • 2015-12-20 - Day 28

  • 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

  • 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

  • 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

Contact

Anak Mirasing

About

Just play with swift in 101 days. Yep, My goal in this project is to wanna try coding trick, and design pattern in swift.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages