【问题标题】:looping thought results in FBRequestConnection Swift循环思想导致 FBRequestConnection Swift
【发布时间】:2015-03-23 20:38:06
【问题描述】:

我已经对 eventName 进行了硬编码,并将它附加到我的 eventNameArray 中,这样我就可以将它分配给我的表格视图中的 UILabel。这很好用。

func fetchInfo() {


    FBRequestConnection.startWithGraphPath("FBpage/events?fields=name,is_date_only,cover,description", completionHandler: {(connection: FBRequestConnection!, result: AnyObject!, error: NSError!) ->
    Void in

            var eventData = result["data"] as [NSDictionary]
            var getEvent = eventData[0]
            var eventName = getEvent.objectForKey("name") as String
            self.eventNameArray.append(eventName)

            self.tableView.reloadData()


    }
 as FBRequestHandler)


    }//end of fetchfunc

但实际上 eventData 中有不止一个字典(看起来更像这样,但一遍又一遍地多达 10 多个事件)

cover =     {
    "cover_id" = 111;
    id = 11;
    "offset_x" = 0;
    "offset_y" = 0;
    source = "https://scontent.xx.fbcdn.net/hphotos-xfp1/v/t1.0-    9/s720x720/1484689_43320_n.jpg?";
    };
description = "Description for 1st event";
id = 111;
"is_date_only" = 0;
name = "First Event";
"start_time" = "2015-04-11T21:00:00+0800";
}, {
cover =     {
    "cover_id" = 222;
    id = 222;
    "offset_x" = 0;
    "offset_y" = 63;
    source = "https://fbcd-xpa1/t3242_431.png";
};
description = "Description for 2nd event";
id = 22222;
"is_date_only" = 0;
name = "Second Event";
"start_time" = "2015-04-10T21:00:00+0800";
}

我将如何循环,以便我可以获取所有 objectForKey("name") 并将其附加到我的 eventNameArray 而不是硬编码。我明白我现在遇到了什么,只是不知道如何重构它,以便我可以抓住一切

谢谢!

【问题讨论】:

    标签: arrays loops swift dictionary


    【解决方案1】:

    有一个循环:

    var eventNames: [String] = []
    
    for event in events as [[NSObject:AnyObject]] {
        let eventName = event["name"] as String
        eventNames.append(eventName)
    }
    

    或者像使用闭包一样快速:

    let eventNames = (events as [[NSObject:AnyObject]]).map({$0["name"] as? String}) 
    

    请记住,我假设每个事件都有一个名称

    如果你想确保你产生了你需要的崩溃,你可以先检查它的值是否存在。 循环:

    var eventNames: [String] = []
    
    for event in events as [[NSObject:AnyObject]] {
        if let eventName = event["name"] as? String {
            eventNames.append(eventName)
        }
    }
    

    关闭:

    let eventNames = (events as [[NSObject:AnyObject]]).map({$0["name"] as? String}) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2018-08-07
      • 2020-05-30
      • 1970-01-01
      相关资源
      最近更新 更多