Skip to content

Instantly share code, notes, and snippets.

@pyrtsa
Created February 13, 2015 20:46
Show Gist options
  • Save pyrtsa/afa196e7ef46335c8bde to your computer and use it in GitHub Desktop.
Save pyrtsa/afa196e7ef46335c8bde to your computer and use it in GitHub Desktop.
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
}
// 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