2016-10-13 4 views
1

나는 facebook-api을 사용하여 사용자의 친구를 가져 왔습니다. 이 코드는 다음과 같다 :어떻게 NSArray를 특정 문자열로 변환 할 수 있습니까?

let params = ["fields": "id"] 
let request = FBSDKGraphRequest(graphPath: "me/friends", parameters: params) 
request.startWithCompletionHandler { (connection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in 

    if error != nil { 
     let errorMessage = error.localizedDescription 
     print(errorMessage) 
     /* Handle error */ 
    } 
    else if result.isKindOfClass(NSDictionary){ 
     /* handle response */ 
     let defaults = NSUserDefaults.standardUserDefaults() 


     let resultdict = result as! NSDictionary 

     let data : NSArray = resultdict.objectForKey("data") as! NSArray 

     for i in 0..<data.count { 
      let valueDict : NSDictionary = data[i] as! NSDictionary 
      let id = valueDict.objectForKey("id") as! String 
      print("the id value is \(id)") 
     } 

     let friends = resultdict.objectForKey("data") as! NSArray 
     print("Found \(friends.count) friends") 
     print(friends) 

     defaults.setObject(friends, forKey: "fb_friends") 
     defaults.synchronize() 
    } 
} 

resultDict가 포함

{ 
    data =  (
       { 
      id = 1662200084096651; 
     } 
    ); 
    paging =  { 
     cursors =   { 
      after = QVFIUmFsa0JGazI4amNEcFczT0NRQzdiNshusdsDSHFDHFDDSm02UzNudV9ZATS1ESk5iUEQ5T2syNGDSw4yegdxbdf4WGZA3; 
      before = QVFIUmFsa0JGazI4amNEcFczT0NRQzdiNURGQTgdsgdsHFDSHTRTNU9DSm02UzNudV9ZATS1ESk5iUEQ5T2syNkRjQW8xc1drGgdsGREHRTcXE4WGZA3; 
     }; 
    }; 
    summary =  { 
     "total_count" = 762; 
    }; 
} 

(1 FB 친구) 프린트 위에 print :

( { 식 1020XXXXXX305XXX; } )

내 서비스에 전달하고 싶습니다. R, 그래서 나는 일을 생각 :

var emptyParams = ["":""] 
emptyParams["friends"] = (defaults.objectForKey("fb_friends") as! NSArray).componentsJoinedByString(",") 

을하지만 대신 PARAMS :

friends: 1020XXXXXX305XXX 

나는이 :

"friends": { 
    id = 10206503694305180; 
} 

내가 id를 건너 뛰고 배열로 보낼 , 내 서버에 있기 때문에 :

var friends = req.body.friends; 
for(var i=0; i<friends.length; i++) { 
    console.log(friends[i]); 
     query = query.or([{ 'fb_friend': friends[i] }]); 
} 

올바른 방법으로 내 swift 코드를 수정해야합니까?

+0

결과를 알려주시겠습니까? 왜냐하면 나는 이드와 포맷 등의 가치를 가지고 여기서 혼란스러워하고 있기 때문이다. –

+0

@Sharpkits 필요한 정보를 부족한 부분에 대한 편집을 추가했다. – user3766930

답변

1

코드에서 알 수있는 바로는 fb_friends의 유형이 [[String:String]]이고 전환율을 [String]으로 변경 하시겠습니까?

.map을 사용하면 "id"을 사전에서 가져올 수 있습니다.

let friends = (defaults.objectForKey("fb_friends") as! NSArray) 
    .map{$0["id"]!} 
    .joinWithSeparator(",") 
let params = [ 
    "friends": friends 
] 
+0

고마워요,하지만'map'을 하이라이트하고'Value of type (String?)에 멤버가 없습니다 ... :( – user3766930

+0

현재 Swift 2.2 ...'joinWithSeparator (...')를 사용하고 있습니다. 완벽하게 일 했어, 고마워, 브라이언! – user3766930

관련 문제