相关疑难解决方法(0)

在Swift上从URL加载/下载图像

我想从我的应用程序中的URL加载一个图像,所以我首先尝试使用Objective-C然后使用Swift,我有一个编译错误:

'imageWithData'不可用:使用对象构造'UIImage(data :)'

我的功能:

@IBOutlet var imageView : UIImageView

override func viewDidLoad() {
    super.viewDidLoad()

    var url:NSURL = NSURL.URLWithString("http://myURL/ios8.png")
    var data:NSData = NSData.dataWithContentsOfURL(url, options: nil, error: nil)

    imageView.image = UIImage.imageWithData(data)// Error here
}
Run Code Online (Sandbox Code Playgroud)

在Objective-C中:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURL *url = [NSURL URLWithString:(@"http://myURL/ios8.png")];
    NSData *data = [NSData dataWithContentsOfURL:url];

    _imageView.image = [UIImage imageWithData: data];
    _labelURL.text = @"http://www.quentinroussat.fr/assets/img/iOS%20icon's%20Style/ios8.png";
 }
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么imageWithData:它不适用于Swift,我该如何解决这个问题.

nsurl uiimage ios swift

387
推荐指数
19
解决办法
45万
查看次数

Swift函数在完成处理之前返回值

基本上,我有一个用于将简单数据发布到服务器的代码,success如果发布请求成功,它将返回一个布尔值,但是似乎在处理数据之前就已经返回了布尔值,我在做错什么吗?

public func postRequest(rawText: String) -> Bool {
    var success = true
    let destUrl = "http://api.getquesto.com:8080/upload/"
    var request = URLRequest(url: URL(string: destUrl)!)
    request.httpMethod = "POST"
    let postString = rawText
    request.setValue("text/plain", forHTTPHeaderField: "Content-Type")
//    request.setValue("compute", forHTTPHeaderField: "Questo-Query")
//    request.setValue("Fuck you", forHTTPHeaderField: "quizTitle")

    request.httpBody = postString.data(using: .utf8)
    print(request.httpBody!)
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {                                                 // check for fundamental networking error
            print("error=\(error)")
            success = false
            print(success)

            return …
Run Code Online (Sandbox Code Playgroud)

function ios nsurlsession swift swift3

4
推荐指数
1
解决办法
1837
查看次数

快速返回值 URLSession.shared.dataTask

我刚开始编码Swift,我有以下解析 JSON 的代码

func parse (latitude: Double, longtitude: Double){


    let jsonUrlString = "https://api.darksky.net/forecast/apiKey/\(latitude),\(longtitude)"

    guard let url = URL(string: jsonUrlString) else{
        return
    }

    var information: forecast?
    URLSession.shared.dataTask(with: url) { (data, res, err) in

        guard let data = data else { 
              return
        }

        do {
            let json = try JSONDecoder().decode(forecast.self, from: data)
            self.info = json

        } catch {
            print("didnt work")
        }

    }.resume()

    processJson(info)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我想将存储在 JSON 中的数据传递给要使用processJson函数处理的类中的变量,但是由于 dataTask 函数不返回任何值,并且 JSON 变量是本地存储的,因此我无法在类之外处理 info 变量(它总是返回零)。我想知道这个问题的解决方案是什么?我面临同样的问题weather.getCoordinate()

ios swift swift4

3
推荐指数
1
解决办法
2万
查看次数

等待回应Alamofire迅速

我需要在执行功能之前等待response.response?.allHeaderFields数据。我已经在网上搜索过,还没有完全了解如何向alamofire请求中添加“完成处理程序”。或者是否还有其他方法可以使函数等待。

@IBAction func comfirmation(sender: UIButton) {
    if CodeTextField.text != "" {
        print("in comfirmation function")
        let comfirmationRequestData = [
            "phone" : "\(appDelegate.savedNumber)",
            "code" : "\(CodeTextField.text!)"
        ]
        Alamofire.request(.POST,
            "http://192.168.214.241:4000/login",
            parameters: comfirmationRequestData,
            encoding: .JSON).responseJSON {
                response in
                switch response.result {
                case .Success:
                    let jsonDecrypted = JSON(response.result.value!)
                    print(jsonDecrypted)
                    let headerFile = response.response?.allHeaderFields as? [String:String]
                    print(headerFile)

                case .Failure(let error):
                    print(error)
                }
        }
        print("in comfirmation function. success")
        appDelegate.defaults.setValue(appDelegate.savedNumber, forKey: "phoneNumber")
    } else {
        print("in comfirmation function. failed")
    }

}
Run Code Online (Sandbox Code Playgroud)

response synchronous ios swift alamofire

2
推荐指数
1
解决办法
6680
查看次数

快速等待,直到dataTaskWithRequest完成调用返回

我是Swift的新手,我对同步调用有疑问。我想对dataTaskWithRequest进行同步调用,以便一旦dataTaskWithRequest完成,就将调用return方法。这是我的代码:

private func sendRequest (request: NSURLRequest) -> NSData{
    let session = NSURLSession.sharedSession()
    var dataReceived: NSData = NSData ()
    let task = session.dataTaskWithRequest(request) { data, response, error in
        if error != nil{
            print("Error -> \(error)")
            return
        }
    dataReceived = data!
    }
    task.resume()
    return dataReceived
}
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?我尝试使用完成处理程序,但无法执行。

预先非常感谢您的帮助。

synchronous nsurlconnection nsurlsession swift

1
推荐指数
1
解决办法
6376
查看次数

通过AlamofireImage下载UIImage?

我有一个URL,并希望通过返回功能下载图像,但我不能让它正确合作,这是我的功能:

func getTabImage(url: URL) -> UIImage {
    Alamofire.request(url)
        .responseImage { response in
            if let image = response.result.value {
                return image
            } else {
                print("Failed to get image")
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

我传入了URL,并希望从alamofire响应中返回一个UIImage.

但我明白了

void函数中出现意外的非void返回值

对于退货声明.

我怎样才能正确实现这一目标?

ios swift alamofire alamofireimage

0
推荐指数
1
解决办法
3270
查看次数