2017-03-05 11 views
-2

다음 JSON 데이터 구조가 FBSDKGraphRequest에서 가져옵니다.JSON 데이터 추출 -

data =  (
      { 
     id = "<USER_ID_GOES_HERE>"; 
     name = "Tom Jones"; 
     picture =    { 
      data =     { 
       "is_silhouette" = 0; 
       url = "<USER_IMAGE_URL_GOES_HERE>"; 
      }; 
     }; 
    }, 
      { 
     id = "<USER_ID_GOES_HERE>"; 
     name = "Tom Jones"; 
     picture =    { 
      data =     { 
       "is_silhouette" = 0; 
       url = "<USER_IMAGE_URL_GOES_HERE>"; 
      }; 
     }; 
    }, 
      { 
     id = "<USER_ID_GOES_HERE>"; 
     name = "Tom Jones"; 
     picture =    { 
      data =     { 
       "is_silhouette" = 0; 
       url = "<USER_IMAGE_URL_GOES_HERE>"; 
      }; 
     }; 
    }, 

데이터를 추출하여 배열에 넣고 싶습니다. 첫 번째 "데이터"키에 어려움을 겪고 있습니다.

Heres는 내 FBSDKGR :

let params = ["fields": "name, picture.type(large)"] 
    let request = FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: params) 
    request!.start { (connection, result, error) -> Void in 

     if error != nil { 
      print("There is some error getting friends", error!) 
     } 
     else if result != nil { 
      print("Here is the result", result!) 
+0

본질적으로이 데이터를 UITableView에 가져오고 싶습니다. –

+5

SO에서 검색 했습니까? JSON을 파싱하려면 수백 가지의 관련 질문이 있습니다. JSON 읽기! '[]'는 배열이고 (인덱스에 의해 첨자 붙이기 위해)'{}'는 사전 (키에 의해 첨자 화됨)입니다. 그러나 목록은 스위프트 컬렉션 유형의 콘솔 출력입니다. '()'는 배열이고'{}'는 사전입니다. – vadian

답변

1

With an extra dependency, if you don't mind.

import SwiftyJSON 

let json = JSON(result) // after you get result from FBSDKGR 
let data = json["data"].array 
for (index, _) in data.enumerated() { 
    if let id = json["data", index, "id"].int { 
      // add to your array 
      if let name = json["data", index, "name"].string { 
       // continue nesting... 
     } 
    } 
} 
0

당신의 JSOND의 DTA으로 우리는 다음과 같은 방법으로 결과를 캐스팅 할 수 있으므로 사전의 배열입니다. 우선 우리는 두 배열을 취할 것이고, 하나는 이름 목록을위한 것이고 다른 하나는 그림 세부 사항을위한 것입니다. 여기 그림 세부 배열은 사전의 배열입니다. 코드를 놓으십시오.

var namesArray = [String]() 
var ImageDetailsArrayDict= [[String :AnyObject]]() 

let params = ["fields": "name, picture.type(large)"] 
    let request = FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: params) 
    request!.start { (connection, result, error) -> Void in 

     if error != nil { 
      print("There is some error getting friends", error!) 
     } 
     else if result != nil { 
      print("Here is the result", result!) 
     if let response = result["data"] as? [[String :AnyObject]] { 

       for i in 0..<response.count { 
        namesArray.append(response[i]["name"] as! String)     
        ImageDetailsArrayDict.append(response[i]["picture"]) 

       } 
       } 
      } 
     } 

이제 두 개의 어레이가 있습니다. 그래서 우리는 쉽게 tableView에 그것을 채울 수 있습니다. 행운을 비네.

+0

오류 유형에는 여전히 아래 첨자 구성원이 없습니다. if response = result [ "data"] if? [[문자열 : AnyObject]] { –

+0

그것은 내 편이, plz 디버그 및 실행 중입니다. – Harish