以下是我用来从网址获取图片的代码,但代码崩溃时发布了下面的错误。请有人帮我解决这个问题。
let imageurl = Gift.imagesUrl.replacingOccurrences(of: "\n", with: "", options: .regularExpression)
Alamofire.request(imageurl, method: .get).responseImage { response in
print(response)
}
ERROR:
FAILURE: invalidURL("( \"https://s3.amazonaws.com/webdevapp/app/public/spree/products/2/product/ri1.jpg?1476104874\")")
答案 0 :(得分:0)
使用此代码
let ImageURL = URL(string: "your image URL")!
Alamofire.request(ImageURL).responseData { (response) in
if response.error == nil {
print(response.result)
// Show the downloaded image:
if let data = response.data {
self.downloadImage.image = UIImage(data: data)
}
}
}
答案 1 :(得分:0)
let urlstring = Gift.imagesUrl
let string = urlstring.replacingOccurrences(of: "[\n \" )(]", with: "", options: .regularExpression, range: nil)
Alamofire.request(string).responseImage{ response in
print(response)
}
答案 2 :(得分:0)
我不能让解决方案成为:
let string = urlstring.replacingOccurrences(of: "[\n \" )(]", with: "", options: .regularExpression, range: nil)
这是一个hacky解决方案,而不是一个可行的解决方案。这是一个糟糕的解决方案。
真正的问题是什么?获取imagesUrl
的解析是错误的。
你这样做了:
var _imagesUrl:String?
var imagesUrl:String
{
if _imagesUrl == nil
{
_imagesUrl = ""
}
return _imagesUrl!
}
if let image = giftherData["master_variant_images"] as? NSArray
{
self._imagesUrl = String(describing: image)
}
怎么了?
不要在Swift3 +中使用NSArray
。使用Swift数组。
不要使用String(describing:)
,这不符合你的想法。它调用了对象的description
方法(在您的情况下为NSArray
),这就是它添加(
,\n
,"
,)
的原因。你想要的是对象,而不是描述。
如果你的var imagesUrl
只有一个,或者你只对第一个感兴趣,请不要用“s”调用它那个不清楚,而且是一个误导性的名字。
应该是:
if let imageStringURLs = giftherData["master_variant_images"] as? [String] { //Yes, use a Swift Array of String, not a NSArray
self._imagesUrl = imageStringURLs.first //I took presumption that you are only interested in the first one, of not, then use an array to save them, not a String.
}
或:
var _imagesUrl: [String]?
var imagesUrl: [String]?
//if nil as you did
if let imageStringURLs = giftherData["master_variant_images"] as? [String] { //Yes, use a Swift Array of String, not a NSArray
self._imagesUrl = imageStringURLs
}
然后,你只需:
Alamofire.request(Gift.imagesUrl).responseImage{ response in
print(response)
}
或(使用数组)
let firstURL = Gift.imagesUrl[0] //Or if it's the second let secondURL = Gift.imagesUrl[1], etc.
Alamofire.request(firstURL).responseImage{ response in
print(response)
}