2016-10-13 3 views
1

Ich benutze facebook-api, um Freunde des Benutzers zu holen. Der Code ist wie folgt:Wie kann ich NSArray in bestimmte Zeichenfolge konvertieren?

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() 
    } 
} 

Die resultDict enthält:

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

Die print obigen Drucke (für 1 fb Freund):

( { id = 1020XXXXXX305XXX; } )

Ich möchte dies an meinen Aufschlag weitergeben r, so dachte ich über das tun:

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

aber dann statt params:

friends: 1020XXXXXX305XXX 

ich habe:

"friends": { 
    id = 10206503694305180; 
} 

ich die id und senden Sie es als ein Array überspringen wollen , denn auf meinem Server habe ich:

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

Wie soll ich meinen swift Code ändern, damit er eine korrekte Anfrage erstellt?

+0

Können Sie bitte das ErgebnisDict Wert geben. Weil ich hier mit dem Wert der ID und des Formats usw. verwirrt werde. –

+0

@Sharpkits habe ich notwendigen Edit hinzugefügt, Entschuldigung für das Fehlen dieser Information an einem ersten Platz! – user3766930

Antwort

1

Von dem, was ich von Ihrem Code verstehe, fb_friends haben Sie Art von [[String:String]] und Sie möchten es in [String] konvertieren?

Sie können .map verwenden, um "id" aus dem Wörterbuch zu erhalten.

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

Danke, aber jetzt markiert es die 'map' und sagt mir, dass' Wert des Typs (String?) Hat kein Mitglied beigetreten ... :( – user3766930

+0

Ich verwende derzeit Swift 2.2 ... 'joinWithSeparator (...' hat perfekt funktioniert, danke Bryan! – user3766930

Verwandte Themen