2016-10-13 7 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; 
    }; 
} 

print выше отпечатков (для 1 FB другу):

( { ID = 1020XXXXXX305XXX; } )

Я хочу передать это на свою службу г, так что я думал о выполнении:

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

но вместо Титулы:

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

Не могли бы вы дать результатУказать значение. Потому что я запутался здесь со значением 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

Спасибо, но теперь он выделяет «карту» и сообщает мне, что «Значение типа (String?) Не имеет члена, присоединенного ... :( – user3766930

+0

Я в настоящее время использую Swift 2.2 ...' joinWithSeparator (... ' отлично работал, спасибо Брайан! – user3766930