Use of Undeclared Type Autoreleasingunsafepointer Xcode 6 Beta 6

Swift Model Class - Use of undeclared type - Xcode 7 beta

The property does matter. Change your variable name to not the same with the class name like so because it has conflicts and the compiler does not know it should be class name or variable name:

var person: Person?
var doctor: Doctor?
var address: Address?

JSON Serialization crashing in swift

The error Xcode is giving you isn't very helpful, but it looks like you need to declare your error variable a different way (more at Apple's documentation), and then make sure you handle the case of the dictionary coming back nil:

var error: AutoreleasingUnsafePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data,
options:NSJSONReadingOptions.MutableContainers,
error: error) as? NSDictionary
if jsonResult {
// process jsonResult
} else {
// couldn't load JSON, look at error
}

swift programming NSErrorPointer error etc

These types and methods have changed a lot since Swift 1.

  1. The NS prefix is dropped
  2. The methods now throw exceptions instead of taking an error pointer
  3. Use of NSDictionary is discouraged. Instead use a Swift dictionary

This results in the following code:

do {
let object = try JSONSerialization.jsonObject(
with: responseData,
options: .allowFragments)
if let dictionary = object as? [String:Any] {
// do something with the dictionary
}
else {
print("Response data is not a dictionary")
}
}
catch {
print("Error parsing response data: \(error)")
}

Of, if you don't care about the specific parsing error:

let object = try JSONSerialization.jsonObject(
with: responseData,
options: .allowFragments)
if let dictionary = object as? [String:Any] {
// do something with the dictionary
}
else {
print("Response data is not a dictionary")
}

Original Answer

Your NSError has to be defined as an Optional because it can be nil:

var error: NSError?

You also want to account for there being an error in the parsing which will return nil or the parsing returning an array. To do that, we can use an optional casting with the as? operator.

That leaves us with the complete code:

var possibleData = NSJSONSerialization.JSONObjectWithData(
responseData,
options:NSJSONReadingOptions.AllowFragments,
error: &error
) as? NSDictionary;

if let actualError = error {
println("An Error Occurred: \(actualError)")
}
else if let data = possibleData {
// do something with the returned data
}

How can I print out Core Data save error in Swift

You have to pass a pointer to an optional NSError object.
As an example, this is the template code from Xcode if you create an iOS app and select
the "Use Core Data" checkbox:

func saveContext () {
if let moc = self.managedObjectContext {
var error: NSError? = nil
if moc.hasChanges && !moc.save(&error) {
// Replace this implementation with code to handle the error appropriately.
// ...
NSLog("Unresolved error \(error), \(error!.userInfo)")
abort()
}
}
}


Related Topics



Leave a reply



Submit