2016-10-13 6 views
1

私はfacebook-apiを使用してユーザーの友人を取得しています。コードは以下の通りである:どのようにNSArrayを特定のStringに変換できますか?

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

( { ID = 1020XXXXXX305XXX; } )

私はこれを私のサービスに渡したいRので、私はやって考えた:私が持っている

friends: 1020XXXXXX305XXX 

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

が、その後代わりのparamsのを

"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

resultDictの値を教えてください。私はIDとフォーマットなどの価値をここで混乱させているので –

+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

関連する問題