我想从我的应用程序中的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,我该如何解决这个问题.
基本上,我有一个用于将简单数据发布到服务器的代码,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) 我刚开始编码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()。
我需要在执行功能之前等待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) 我是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)
最好的方法是什么?我尝试使用完成处理程序,但无法执行。
预先非常感谢您的帮助。
我有一个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返回值
对于退货声明.
我怎样才能正确实现这一目标?