【问题标题】:Swift if there is data populate Dictionary, if not nillSwift 如果有数据填充字典,如果不是 nil
【发布时间】:2016-08-02 17:40:22
【问题描述】:

我这里有这段代码:

var credential: NSURLCredential!

    func loginUser(username: String, password: String) -> Dictionary<String, AnyObject> {

        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)

        credential = NSURLCredential(user:username, password:password, persistence: .ForSession)

        let requestString = NSString(format:"%@", webservice) as String
        let url: NSURL! = NSURL(string: requestString)

        var dataString: Dictionary<String, AnyObject>

        let task = session.dataTaskWithURL(url, completionHandler: {
            data, response, error in

            dispatch_async(dispatch_get_main_queue(),
            {

                do
                {
                    dataString = (try NSPropertyListSerialization.propertyListWithData(data!, options: NSPropertyListReadOptions.Immutable, format: nil)) as! Dictionary<String, AnyObject>
                }
                catch
                {
                    dataString = nil
                }

            })

        })

        task.resume()

        return dataString

    }

我要做的是以下,将 NSData 转换为 Dictionary。如果失败或没有数据,则返回 nill 或 en empty Dictionary。我该怎么做?

【问题讨论】:

  • 这个函数的哪些部分是用来登录用户的,哪些部分是用来转换数据的?您应该将其分为 2 个函数,以便更容易理解正在发生的事情以及您尝试过的内容

标签: ios swift dictionary


【解决方案1】:

您在网络任务完成之前从函数返回。您应该使用在收到响应时可以调用的完成块。即在您的函数中添加完成处理程序并从您的网络服务调用的完成块中调用它。 Refer this link for more detail

【讨论】:

    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多