Created
February 13, 2015 20:46
-
-
Save pyrtsa/afa196e7ef46335c8bde to your computer and use it in GitHub Desktop.
Reponse to http://pastie.org/9945352
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func StringFromURL (url : NSURL, | |
error errorPointer : NSErrorPointer) -> (NSString?) { | |
var error : NSError? | |
// Request data | |
let data: NSData | |
if let some = NSData(contentsOfURL:url, options: NSDataReadingOptions(rawValue:0), error: &error) { | |
data = some | |
} else { | |
errorPointer.memory = error | |
return nil | |
} | |
// Convert the data to a UTF-8 string | |
let string: String | |
if let some = NSString(data: data, encoding: NSUTF8StringEncoding) | |
string = some | |
} else { | |
errorPointer.memory = BuildError(1, "Unable to build string from data") | |
return nil | |
} | |
// Return the string | |
return string | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Return NSError from code and reason | |
func BuildError(code : Int, reason : String) -> NSError { | |
let errorDomain = "com.sadun.examples" | |
let error = NSError(domain: errorDomain, code: code, | |
userInfo: [ | |
NSLocalizedDescriptionKey:reason, | |
NSLocalizedFailureReasonErrorKey:reason]) | |
return error | |
} | |
// Fetch string using standard Swift if-let | |
func StringFromURL(url : NSURL, | |
error errorPointer : NSErrorPointer) -> (NSString?) { | |
var error : NSError? | |
// Request data | |
if let data = NSData(contentsOfURL:url, options: | |
NSDataReadingOptions(rawValue:0), error: &error) { | |
// Convert the data to a UTF-8 string | |
if let string = NSString(data: data, encoding: NSUTF8StringEncoding) { | |
// Return the string | |
return string | |
} | |
errorPointer.memory = BuildError(1, "Unable to build string from data") | |
return nil | |
} | |
errorPointer.memory = error | |
return nil | |
} | |
VERSUS | |
// Fetch string using a linear flow | |
func StringFromURL (url : NSURL, | |
error errorPointer : NSErrorPointer) -> (NSString?) { | |
var error : NSError? | |
// Request data | |
let data = NSData(contentsOfURL:url, | |
options: NSDataReadingOptions(rawValue:0), error: &error) | |
if (data == nil) { | |
errorPointer.memory = error | |
return nil | |
} | |
// Convert the data to a UTF-8 string | |
let string = NSString(data: data!, encoding: NSUTF8StringEncoding) | |
if (string == nil) { | |
errorPointer.memory = | |
BuildError(1, "Unable to build string from data") | |
return nil | |
} | |
// Return the string | |
return string | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment