swift4.2-ios-app-development-India

What’s new in swift 4.2

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

[vc_row][vc_column][vc_column_text]Swift 4.2.1 is finally released !.New Xcode 10.1 comes with the latest swift 4.2.1 and with the bundle of the feature with it. Swift latest release will really provide the great features which will definitely save the developer’s time and complexity in coding. Swift 4.2.1 release majorly targets for code optimization and run time performance.

Boolean Toggling

Now it is easy to toggle the boolean value just by calling the function.toggle() function can be used to change the boolean state of the variable from true to false and vice versa.

Try this:

 

var userPromoCode = false

userPromoCode.toggle()

 

Here after the execution of the code the value of userPromoCode will be True.toggle() function help in means of readability and easiness if your write complex data structure.

 

Random Method

 

For randomizing the number we use C API method arc4random_uniform(10) till now,  which is included in foundation library.Now swift has its own function to do this random() function can be used to generate a range of the random number on whatever numeric type you like. Randomization is not limit to numeric type collection can also be use it .shuffle() and shuffled() are two  methods can be used for collections to shuffle the content of the collection safely.

 

Try this:

 

let  random_Num     = Int.random(in:0 ..< 10)

let  random_Float    = Float.random(in:0..< 10)

 

For Collections.

 

var diceRoll = [1,2,3,4,5,6]

diceRoll.shuffle()

print(“Dice Rolled \(diceRoll)”)

 

let itemShuffled = diceRoll.shuffled()      //Returns shuffled array

print(“Dice Rolled \()”)

 

Sequence Methods

Any one with Java back ground will love this new sequence method in swift .Sequence Methods are used for find the element,Index of match element and direct index of the elements.

last(where:) , lastIndex(where:) , lastIndex(of:) are the methods introduced in swift out which two requires a closure as an argument and last requires the elements to be searched.

 

Try this.

 

1.let numberArr = [30,50,60,10,5,12,46,67]

print(“Last Highest Number \(numberArr.last(where:{$0 > 50}))”)

// Prints 67

$0 is the first value compare with the other elements

 

print(“Last Highest Number \(numberArr.lastIndex(where:{$0 > 50}))”)

// Prints 7

 

print(“Last Highest Number \(numberArr.astIndex(of:60))”)

// Prints 2

 

Sequence method not yet done we have allSatisfy(_:) that validate every element and return true  if all match a given condition.

 

let numArr = [30,50,60,10,4,12,46,68]

let isEvenArr = numArr.allSatisfy({$0 % 2 == 0 })

// isEvenArr hold True value.

 

removeAll(where:) method remove all items in collection which matches the condition.

 

Try this

 

Let empName = [“sam”,”Rocky”,”Smith”,”logan”]

empName.removeAll{$0.hasSuffix(“ky”)}

print(empName)

//Prints sam,logan,smith

 

Dynamic Member Lookup

Dynamic member lookup allows swift to call a subscript method when accessing properties. It is the easiest way of accessing property just by using dot operator . Once  you register your class/struct with @dynamicMemberLookup  keyword the compiler doesn’t complain with what so ever name you call the subscript method and at the same time it is type safe.

 

Let try this in playground.

 

@dynamicMemberLookup

struct Person

{

   subscript(dynamicMember name:String) -> Int

   {

       return name.count

   }

}

let personObj = Person()

personObj.pqwrs

//Prints

5

So it’s No matter what’s the name of the property it call the subscript method name

 

// 1

@dynamicMemberLookup

class Employee {

 let name: String

 let age: Int

 private let empPersonal: [String: String]

 

 init(name: String, age: Int, details: [String: String]) {

   self.name = name

   self.age = age

   self.details = details

 }

 

 // 2

 subscript(dynamicMember key: String) -> String {

   switch key {

     case “info”:

       return “\(name) is \(age) years old.”

     default:

       return details[key] ?? “”

   }

 }

}

 

// Creating Object of the Class

 

let details = [“department”: “IT”, “location”: “Mumbai”]

let me = Employee(name: “Logan”, age: 32, details: details)

me.info   // “Logan is 32 years old.”

me.department  // “IT”[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][/vc_column][/vc_row]

 

Hire Swift Developer