将AnyObject / NSDictionary(JSON)转换为字符串?

时间:2015-04-26 18:01:26

标签: ios json swift facebook-graph-api

我在Facebook图表中输入了朋友列表,我希望将其作为参数发送到我的UIWebView中的javascript函数。

我的问题是我无法将回复(AnyObject / NSDictionary)变为普通简单String

在这个例子中,我希望将完整的响应作为字符串发送到JavaScript方法,我将在内部使用。

(目前我得到一个空的String并且我到目前为止所做的每一次尝试都失败了)

                let graphFriendsRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me/friends", parameters: nil)
            graphFriendsRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

                if ((error) != nil)
                {
                    // Process error
                    println("Error: \(error)")
                }
                else
                {
                    println("fetched friends: \(result)")

                    let data:NSDictionary=result as! NSDictionary


                    var jsmethod = NSString(format:"setusers('%@')",data) as String
                    self.webView.stringByEvaluatingJavaScriptFromString(jsmethod)


                }
            })

1 个答案:

答案 0 :(得分:0)

按照你在评论中所说的,我认为你应该生成JSON而不是操纵字符串本身。

您在Swift应用程序中收到JSON,并且您希望在JavaScript中使用JSON:无需使用" clean"字符串。

if OBJECT_ID('tempdb..#pairs') is not null drop table #pairs 
if OBJECT_ID('tempdb..#pairs_final') is not null drop table #pairs_final
create table #pairs(pair_no int, a_no varchar(17),a_no2 varchar(17))
create table #pairs_final(pair_no int Identity(1,1), a_no varchar(17),a_no2 varchar(17))


insert into #PAIRS values(1,'1234ABCD','5678EFGH');
insert into #PAIRS values(1,'1234ABCD','XXXX9999');
insert into #PAIRS values(2,'0000AAAA','1111BBBB');
insert into #PAIRS values(3,'5678EFGH','1234ABCD');
insert into #PAIRS values(4,'1111BBBB','0000AAAA');
insert into #PAIRS values(1,'XXXX9999','1234ABCD');

insert into #pairs_final
select a.a_no,a.a_no2 from #pairs a
    join (
        select distinct a_no_p from(
            select pair_no,a_no_p,
            ROW_NUMBER() over (partition by pair_no order by a_no_p) as RN
            from #pairs
            unpivot(
                 a_no_p for clms in (a_no2,a_no)
            ) as umpvt
        ) as mypairs
        where RN = 1
     ) as my_pairs on my_pairs.a_no_p=a.a_no

select * from #pairs_final

然后将这个真正的JSON发送到您的JavaScript。

修改

您是否正在谈论像URL和空格一样清理字符串?如果是,你可以这样做(许多选项):

pair_no  a_no       a_no2
1        1234ABCD   5678EFGH
2        1234ABCD   XXXX9999
3        0000AAAA   1111BBBB