如何将 NSArray 转换为特定的字符串? [英] how can I convert NSArray into specific String?

查看:59
本文介绍了如何将 NSArray 转换为特定的字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 facebook-api 来获取用户的朋友.代码如下:

I'm using facebook-api to fetch user's friends. The code is as follows:

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朋友):

The print above prints (for 1 fb friend):

({id = 1020XXXXXX305XXX;})

( { id = 1020XXXXXX305XXX; } )

我想把它传递给我的服务器,所以我想这样做:

I want to pass this to my server, so I thought about doing:

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

然后代替参数:

friends: 1020XXXXXX305XXX

我有:

"friends": {
    id = 10206503694305180;
}

我想跳过 id 并将其作为数组发送,因为在我的服务器上我有:

I want to skip the id and send it as an array, because on my server I have:

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 代码以创建正确的请求?

how should my modify my swift code so that it creates a correct request?

推荐答案

根据我对你代码的理解,fb_friends 的类型为 [[String:String]]你想把它转换成[String]?

From what I understand of your code, fb_friends have type of [[String:String]] and you want convert it to [String]?

您可以使用 .map 从字典中获取 "id".

You can use .map to get "id" from the dictionary.

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

这篇关于如何将 NSArray 转换为特定的字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆