Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift 2.0

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Swift 2.0

Avatar for Iain Smith

Iain Smith

August 21, 2015
Tweet

Other Decks in Programming

Transcript

  1. Objec&ve(C*Example #import <Foundation/Foundation.h> #import <CoreGraphics/CoreGraphics.h> @class Animal; @interface Park :

    NSObject @property (nonatomic, readonly) NSArray *animals - (Animal *)animalNearestPoint:(CGPoint)point; @end
  2. Swi$%Example @import CoreGraphics class Park { private(set) var animals: [Animal]

    = [] func animalNearestPoint(point: CGPoint) -> Animal? { // Method body omitted } }
  3. Annotated(Objec-ve/C(Example #import <Foundation/Foundation.h> #import <CoreGraphics/CoreGraphics.h> @class Animal; @interface Park :

    NSObject @property (nonatomic, strong, nonnull) NSArray *animals; - (nullable Animal *)animalNearestPoint:(CGPoint)point; @end
  4. RX#Example#(Reac-ve#Cocoa) Objec&ve(C @interface NUKImageProcessor : NSObject - (RACSignal *)imageForBook:(Book *)obj;

    // Internal - (RACSignal *)requestForBook:(Book *)obj; - (RACSignal *)processForBook:(Book *)obj; @end
  5. RX#Example#(Reac-ve#Cocoa) Swi$ class ImageProcessor { func imageForBook(book: Book) -> Signal<UIImage,

    NSError> {} //Internal func requestForBook(book: Book) -> Signal<ImageData, NSError> {} func processForBook(book: Book) -> Signal<UIImage, NoError> {} }
  6. Error$Handling do { let str = try NSString(contentsOfFile: "Foo.bar", encoding:

    NSUTF8StringEncoding) } catch let error as NSError { print(error.localizedDescription) }
  7. Protocol'Extensions protocol APIEndpoint { var endpoint: String { get }

    var base: String { get } } extension APIEndpoint { var url : NSURL { return NSURL(string: base+endpoint)! } }
  8. enum SlackUsersEndpoint : APIEndpoint { case List case Info(SlackUser) var

    endpoint: String { switch(self) { case .Info(let user): return "info?user=\(user.id)" case .List: return "list" } } var base: String { return "https://slack.com/api/users." } }
  9. Extensions)on)Standard)Types protocol Sumable { init() func + (lhs: Self, rhs:

    Self) -> Self } extension Int : Sumable {} extension Double: Sumable {} extension SequenceType where Generator.Element: Sumable { var sum: Generator.Element { return reduce(Generator.Element()) { $0 + $1 } } } [5, 3, 5, 1].sum [3.4, 4.5, 2.0].sum
  10. Defer func processing() { self.delegate?.didStartProcessing() if (active) { if (encoding)

    { self.delegate?.didFinishProcessing } } else { self.delegate?.didFinishProcessing } }
  11. Availability if #available(iOS 8.0, OSX 10.10, *) { // Use

    Handoff APIs when available. let activity = NSUserActivity(activityType:"com.example.ShoppingList.view") activity.becomeCurrent() } else { // Fall back when Handoff APIs not available. } @available(iOS 8.0, OSX 10.10, *) func startUserActivity() -> NSUserActivity { }