Tuesday, August 5, 2014

Swift – All you need to know – Part 1

As we are studying the Swift programming language for past couple of months. While studying the language I cam across many features of the programming. So I thought to compile all those features with some brief introduction so that if some one just want to have a sneak peak at the features he/she can just go though this blog.

So this is the part -1 of the series I am thinking to write. Hope to complete it soon and cover the features in its entirety.



Objective C has been the core programming language for Apple software Development. It has been there for 20 years and serving us well. As per Apple they have worked for 4 years to design Swift Programming Language.

So what is it that they wanted to achieve with Swift? As per Apple during the Swift Programming language intro in WWDC 2014 they want “Objective C without the baggage of C”.

Swift is Fast, Safe, Modern and Interactive programming language. Here are the few key points of Swift programming language:

       Adapts safe programming patterns by using the Type Inference and Generics.

       It adopts the readability of Objective-C’s named parameters and the power of Objective-C’s dynamic Object Model.

       Provides seamless access to the existing Cocoa Framework and Objective-c code.

        Develop apps for iOS and Mac OS both.

You might have heard about the playgrounds the new feature in XCode 6 where you can use Swift language and see the output of the programming as you finish typing the code. We can discuss Playground and its features in other blog. Today we will talk about what all features Swift Programming language has come up with and will have brief introduction about each feature for you to kick start the language.

Wednesday, June 25, 2014

Optionals in Swift Programming Language

As we learned in my other blog about Initializers in Swift Programming Language that every variable in Swift should be initiazed before trying to access the value.

So what if you do not want to initialize a variable. That is where Optionals in Swift comes into play.

Before start discussing about Optionals you should know about nil. nil in Swift means nothing, no value at all.

Lets see what optionals provides us:

  • Optionals can store value nil which means no value.
  • Any non optional can not store nil.
  • you can check for options have nil or value by just writing if value no need to add extra code for == nil. because optionals can be used in boolean context.
Reading a value from the Optional is called unwrapping the Optional.


How to unwrap optionals?
  • using the force unwrap operator !.  but if you use this operator without checking for nil you may end up with an error at runtime.
  • using the if let statement you can check for the value and unwrap it once. This is called optional binding.

Optional Binding


Saturday, June 21, 2014

Initializers in Swift Programming Language

As the name says Initialization. Initializers are declared to set the initial values of the type when any object of type gets initialized. Initializers are declared using the the syntax

init() {…}

you can also pass parameters to the initializers. So As the Swift programming enforces one simple rule

“Every value must be initialized before it is used”

Only exception to the above rule is optionals where we default their vale to nil. 

So what the above rule means? Does it mean that I cannot write something like

var someString : String

No, It means before you access any value it must be initialized in every possible branch of the execution of the code. If you don’t do it you will get a compile time error. Initializers have the responsibility to fully initialize an instance.

Initializers in Structure

So if you have a structure like this

struct Person
{
    var firstName : String
    var LastName: String
    init(first: String, last: String)
    {
        firstName = first
        lastName = last
    }
}
  • Say you forgot to initialize the firstName in the initiazer, than compiler will generate a compile time error.
  • Also if you try to call any method before initializing all the variables in the struct, you will get a compile time error.
  • you can write initializers for Structures and Classes both.


Memberwise Initializer

What if you do not specify any Initializer to the struct or class? 

Swift Compiler provide you with a Memberwise initializer. So for the above structure if you do not have the initializer declared you can still initialize the values by saying

Tuesday, June 17, 2014

Swift Playgrounds Introduction

So finally I had some time to explore the swift playgrounds. One thing I would like to say about playgrounds is that It's awesome and cool...

So here is the icon that they have given to the playground document type.

Clearly icon goes with the name. But believe me it does goes with the icon, its a child play to use the playground. You just open up the playground and you are ready to code.

Saturday, June 7, 2014

Swift programming Tutorials - Functions and Closures

This is the part 1 of the series of the Tutorials of Swift programming. You can take a quick look at the Introduction to Swift.

In this Tutorials we will learn about

Functions

Use func to declare a function. Call a function by following its name with a list of arguments in parentheses. Use -> to separate the parameter names and types from the function’s return type.


Few Points of Functions:
  • Functions can return multiple values using Tuples
  • Functions can accept variable number of parameters and collect them into an array.
  • Nested functions
  • Functions can accept other functions as parameters.
  • Functions can have function as its return value. Because functions are first-class type.
  • Functions are special cases of closures

Thursday, June 5, 2014

Swift programming language Introduction

I was on my way to learn the all mighty Objective-C, and suddenly Apple has come up with the super cool programming language "Swift"....

We will discuss few things about Swift and you will see more Tutorials coming on the way here regarding this.

Here are few of the highlights of the Swift.

  • Adapts Safe Programming Patterns
  • Future of the Apple Software Development
  • Provides access to the existing Foundation and Cocoa Framework.
  • Support both iOS and Mac Apps development.
Best thing that comes with Swift is...

Playground

Playground is an innovative feature that lets you play with the programming language and you can see the results of the program on the fly without even building and running the code. What it does:

Saturday, May 31, 2014

Multipeer Connectivity in iOS 7 Part 2

In the Part 1 of this series we discussed how we can do multipeer connectivity using the BrowserViewController. 

In this blog we will discuss how we can achieve the same programatically, you can also call it programmatic discovery. Doing this Programatically gives us:

  1. Flexibility
  2. Sending and Accepting Invitations Programmatically.
  3. Build a custom UI for discovery.
So if we are going to things manually, than we should know the classes involved in the process. All the classes which are related to the Multipeer Connectivity are available in the "MultipeerConnectivity.framework". 

Add the framework in the project and you can see the list of classes available in the framework. Out of all the classes which will interest you to start doing things are:
  • MCNearbyServiceAdvertiser
  • MCNearbyServiceBrowser
  • MCPeerID
  • MCSession

Sunday, February 16, 2014

Multipeer Connectivity in iOS 7 Part 1

In this blog we will discuss about how to achieve multi peer connectivity using iOS 7 new Muti peer connectivity Framework. We will do it in multiple parts. In this part we will discuss how to discover the near by devices and connect them using the BrowserViewController.


In the first part we will discuss how can we use the view controller provided by the MultipeerConnectivity.framework. Classes in the Framework are prefixed with MC so from now we will use MC for mentioning the Multipeer Connectivity.

So What are the advantages of using the MC framework? Here are few mentioned in the WWDC sessions.

Sunday, January 5, 2014

Objective C Runtime

We will discuss how Objective C runtime system works and how we can find information about the objects at the runtime. The language always behave differently compile time and runtime. 


Objective C Runtimes

Objective C have two versions of the runtime "modern" and "legacy". The modern version comes with version 2.0 of the language. 

Difference among both the versions is that with the modern runtime if you change the layout of a class than you do not have to recompile the classes that inherit from it.