Drag from an existing node to add a new node or link. Hit the DELETE key to remove the selected node or link.
Built with D3.js.
Drag from an existing node to add a new node or link. Hit the DELETE key to remove the selected node or link.
Built with D3.js.
Drag from an existing node to add a new node or link. Click to select/deselect nodes/links. Hit the DELETE key to remove the selected node or link. Drag to pan. Scroll to zoom.
Built with D3.js.
WWDC 2014 Brain Lanier
NULL
, NSNotFound
, etc.) to represent invalid valuesvar optionalNumber: Int?
nil
is a sentinel value that works with any typeoptionalNumber = 6
var fileModificationDate: NSDate!
!
is an implicitly unwrapped optional
Swift is modern, type-safe, expressive, performant
but Objective-C remains a first-class citizen
Same design patterns, Cocoa APIs
"We do not want you to rewrite or stop improving your existing code!"
Should you use unowned
or weak
for delegates?
To expose Objective-C to Swift, use a bridging header
import Foundation | |
infix operator | {} | |
func | (lhs: String, rhs: String) -> String { | |
return NSLocalizedString(lhs, comment: rhs) | |
} | |
postfix operator | {} | |
postfix func | (s: String) -> String { | |
return NSLocalizedString(s, comment: "") | |
} |
Assuming that you don't care which NSManagedObjectContext is used, and you just want to make some changes and save them in the background, use the following method. 90% of the time, this is what you'll want.
NSManagedObjectSubclass *myObject = [NSManagedObjectSubclass MR_findFirst];
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {