EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) mit dataTaskWithUrl

Ich bin mit der google places api für die Suche nach Orten in der Nähe. Jedoch, ich will nur Orte, die von bestimmten Arten. Der code (unten zu sehen) funktioniert, wenn ich geben Sie nur eine Art, aber wenn ich eine Sekunde meinen code ausgeführt und prompt geben Sie mir eine EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) error in dieser Zeile:

session.dataTaskWithURL(url!, completionHandler: { (data : NSData!, response : NSURLResponse!, error : NSError!) -> Void in

Weiß ich die url gültig ist. Kann ich stecken Sie es in den browser und sehen Sie die json -, so verstehe ich nicht, was das problem ist.

func search(location : CLLocationCoordinate2D, radius : Int, callback : (items : [Attraction]?, errorDescription : String?) -> Void) {
    var urlString = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=37.7873589,-122.408227&radius=4000&types=aquarium|art_gallery&key=YOURKEY"
    var url = NSURL(string: urlString)
    var session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())

    session.dataTaskWithURL(url!, completionHandler: { (data : NSData!, response : NSURLResponse!, error : NSError!) -> Void in

        if error != nil {
            callback(items: nil, errorDescription: error.localizedDescription)
        }

        if let statusCode = response as? NSHTTPURLResponse {
            if statusCode.statusCode != 200 {
                callback(items: nil, errorDescription: "Could not continue.  HTTP Status Code was \(statusCode)")
            }
        }

        NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
            callback(items: GooglePlaces.parseFromData(data), errorDescription: nil)
        })

    }).resume()
}


class func parseFromData(data : NSData) -> [Attraction] {
    var attractions = [Attraction]()

    var json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

    var results = json["results"] as? [NSDictionary]

    for result in results! {

        var placeId = result["place_id"] as String
        var image = result["icon"] as String
        var name = result["name"] as String
        var ratingString = ""
        var types = result["types"] as [String]
        println(types)

        if result["rating"] != nil {
            var rating = result["rating"] as Double
            ratingString = "\(rating)"
        }

        var coordinate : CLLocationCoordinate2D!

        if let geometry = result["geometry"] as? NSDictionary {
            if let location = geometry["location"] as? NSDictionary {
                var lat = location["lat"] as CLLocationDegrees
                var long = location["lng"] as CLLocationDegrees
                coordinate = CLLocationCoordinate2D(latitude: lat, longitude: long)

                var placemark = MKPlacemark(coordinate: coordinate, addressDictionary: nil)
                var attraction = Attraction(id: placeId, imageUrl: "image url", locationName: name, ratingAvg: "\(ratingString)", types: types, placemarker: placemark)

                attractions.append(attraction)
            }
        }
    }
    return attractions
}
Haben Sie überprüft, ob var url = NSURL(string: urlString) zurück nil oder nicht?
Du bist genau richtig, aber ich kann nicht herausfinden, warum das passiert. Wenn ich meine plug-url in den browser zeigt er mir die json-es sollte reagiert werden.
Wirklich, @TheRadHatter? Schauen Sie, dass der URL-string. Betrachten Sie es sorgfältig. Sie sehen nicht das problem?

InformationsquelleAutor | 2015-01-20

Schreibe einen Kommentar