|
Read a lot of articles describes Swift 2.0, the feeling Appcoda this introduction more clearly, and easily learn a little translation, the original English look here.
What's New in Swift 2.0: A Brief Introduction
A year ago, Apple iOS and OSX developers to bring a new programming language Swift, when Apple's vice president announced at WWDC moment, I and many developers, excited. As propaganda faster, more secure language, Swift has grown into the most popular languages. At this year's WWDC Apple introduced the Swift 2, I was lucky enough to attend the WWDC conference, here I share some of the new Swift updates.
We're stepping on the gas this year with Swift 2. We think Swift is the next big programming language, the one we will all do application and systems programming on for 20 years to come. We think it should be everywhere and used by everyone .
Craig Federighi, Apple's senior vice president of Software Engineering
I noticed the biggest applause WWDC venue twice, once Apple announced Xcode 7 support UI testing, the Swift is another open-source, which will be a big event, later this year, Apple will develop the Swift the source code to the public, including some of the basic compiler and libraries, which are under the OSI-compliant license. Apple also will allow Swift to support Linux, developers can use to write the Swift system is applied. This shows that Apple has finally started to make efforts to promote the development of the language that newborn door.
Remove these exciting news, Swift 2 introduces some new features, such as error handling (error handling), protocol extension (protocol extensions) and check availability (availability check), let's take a detailed introduction.
Error Handling
Program always error when the function is wrong, if we can figure out what went wrong, help to understand why it failed. Swift version 1 lack of appropriate error handling mode, Swift 2, finally joined the exception handling model, use try / throw / catch keywords.
Imagine a car engine, the engine failed to start because of the following reasons:
No oil (No fuel)
Oil spills (Oil leakage)
Battery Low (Low battery)
In Swift, the error can be seen as follow ErrorType protocol type. Accordingly, you can create a compliance ErrorType enumeration model to represent the above error conditions:
enum CarEngineErrors: ErrorType {
case NoFuel
case OilLeak
case LowBattery
}
To create a function can throw an exception, you can use the throws keyword:
func checkEngine () throws {
}
To throw an error in a function, you can use the throw statement The following example demonstrates the check engine:
let fuelReserve = 20.0
let oilOk = true
let batteryReserve = 0.0
func checkEngine () throws {
guard fuelReserve> 0.0 else {
throw CarEngineErrors.NoFuel
}
guard oilOk else {
throw CarEngineErrors.OilLeak
}
guard batteryReserve> 0.0 else {
throw CarEngineErrors.LowBattery
}
}
Swift 2 guard key is to enhance the flow of control (control flow) launched. When execution control branches to guard statement first checks followed by a conditional statement if the condition is false, the else part will be executed, the example above condition is false executed throw statement throws an exception.
To call throwing function, you need to try before the function name keywords into:
func startEngine () {
try checkEngine ()
}
If you write the above code in Playgrounds, you will get an error. Error handling mechanism Swift requirements you must use the do-catch statement to catch any errors and handle them.
The following function specifies the relevant error after capturing print-related error messages:
func startEngine () {
do {
try checkEngine ()
print ( "Engine started", appendNewline: true)
} Catch CarEngineErrors.NoFuel {
print ( "No Fuel!")
} Catch CarEngineErrors.OilLeak {
print ( "Oil Leak!")
} Catch CarEngineErrors.LowBattery {
print ( "Low Battery!")
} Catch {
// Default
print ( "Unknown reason!")
}
}
Each catch clause matches the specific error, then the error is specified after the capture should do. In the above example, batteryReserve variable is set to 0, execute startEngine in this case () ,. LowBattery error will be thrown.
The batteryReserve to 1.0, there is no such error when launched the car.
Similar to the switch statement, Swift error handling model 2 also requires complete, which means you have to handle all possible errors. That is why we want to include a catch last match without any pattern
If you want to learn more about Swift's error handling, I recommend that you read Apple's official documentation
No More println ()
See here, you may have noticed that println () function missing in Swift 2, we can use the print () to print out. Apple will println () and print () combined. If you want to print a new line, you can set the parameter to true appendNewline
print ( "Engine started", appendNewline: true)
Protocol Extensions
Swift in the first edition, you can use extensions to existing classes, structures, enumerated types to add new features. Swift 2 allows developers to extensions brought on protocol type. By Protocol Extensions, you can add a protocol to comply with class properties or functions. When you want to extend the protocol functionality will become very useful.
Or through an example to illustrate it, and create a Awesome protocol that provides a awesomeness (literally) the percentage return, as long as any object that implements the method of this agreement can be seen as follows:
protocol Awesome {
func awesomenessPercentage () -> Float
}
Now we declare two classes Awesome follow this agreement, each class implements the protocol method:
class Dog: Awesome {
var age: Int!
func awesomenessPercentage () -> Float {
return 0.85
}
}
class Cat: Awesome {
var age: Int!
func awesomenessPercentage () -> Float {
return 0.45
}
}
let dog = Dog ()
dog.awesomenessPercentage ()
let cat = Cat ()
cat.awesomenessPercentage ()
If you are in demo Playground
If you want to add a property to Awesome awesomenessIndex agreement, we will use awesomenessPercentage () method to calculate the index awesomeness:
extension Awesome {
var awesomenessIndex: Int {
get {
return Int (awesomenessPercentage () * 100)
}
}
}
By creating an extension on the protocol, all follow the protocol class will have access immediately awesomenessIndex indexed.
Availability Checking
Each time the developer must build App and have different versions of iOS to fight. You always want to use the latest API, but when APP ye love running older versions of iOS, will produce some errors. Before Swift 2, none of the iOS version can persist ways, such NSURLQueryItem class available only on iOS 8, if you are using in previous iOS versions, you will immediately get an error and crash out, in order to prevent this occurrence of an event, you can perform the following checks:
if NSClassFromString ( "NSURLQueryItem")! = nil {
// IOS 8 or up
} Else {
// Earlier iOS versions
}
This is a class to check whether there is a way, starting from the Swift 2, API support check availability at a particular version, you can easily define a usable condition and perform the iOS version relevant in the corresponding code block specific codes:
if #available (iOS 8, *) {
// IOS 8 or up
let queryItem = NSURLQueryItem ()
} Else {
// Earlier iOS versions
}
do-while is now repeat-while
Classic do-while loop is now renamed to repeat-while, seemingly semantic more clear:
var i = 0
repeat {
i ++
print (i)
} While i <10
Summary
I hope you are happy to go read the Swift official profile 2, there are many things I did not mention in this article, such as comments, etc. Markdown format, you can also go to watch the video to learn more about Swift WWDC 2 content. At this point, there are still quite a number of companies to develop iOS Objective-C as the main language, maybe you are using OC. But I strongly believe that Swift is the way of the future. In fact, WWDC 2015 all sessions are in use Swift, so if you have not learned Swift, now begin to take action now. |
|
|
|