Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Swift 2.0

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 { }