web-dev-qa-db-ja.com

タイプNSDictionaryの値に文字列タイプのインデックスを添え字付けすることはできません

    var url: NSURL = NSURL(string: urlPath)!

    var request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
    request.setValue("Basic \(base64EncodedCredential)", forHTTPHeaderField: "Authorization")
    request.HTTPMethod = "GET"

    var dataVal: NSData =  NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error:nil)!

    var err: NSError
    println(dataVal)


    //var jsonResult : NSDictionary?
    var jsonResult  = NSJSONSerialization.JSONObjectWithData(dataVal, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSDictionary

    println("Synchronous  \(jsonResult)")
    jsonResult["records"] 

ここでエラーが発生します。コンソールで正しく出力されるjsonResultから1つの値を取得するだけです。

17
BorjaCin

JsonResultをNSDictionaryとして型キャストしていますが、代わりに_[String:AnyObject]_を使用してください

NSDictionaryを使用している場合は、NSDictionaryvalueForKey(key)またはobjectForKey(key)メソッドを使用して、キーの値を取得する必要があります。

_    var url: NSURL = NSURL(string: urlPath)!
    var err: NSError?

        var request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
        request.setValue("Basic \(base64EncodedCredential)", forHTTPHeaderField: "Authorization")
        request.HTTPMethod = "GET"

        var dataVal: NSData =  NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error:nil)!

        var err: NSError
        println(dataVal)


        //var jsonResult : NSDictionary?
        var jsonResult:AnyObject?  = NSJSONSerialization.JSONObjectWithData(dataVal, options: NSJSONReadingOptions.MutableLeaves, error: &err)  

        println("Synchronous  \(jsonResult)")
        if let result = jsonResult as? [String: AnyObject] {
           if let oneValue = result["records"] as? String { //Here i am considering value for jsonResult["records"] as String, if it other than String, please change it.
             println(oneValue)
           }
       }
_
29
Amit89