这是我的代码:
urll = NSURL(string: "http://xxxxxxxxxxx.com/api/?slider=uij6sdnb")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(urll) {(NSData, response, error) -> Void in
do {
let records = try NSJSONSerialization.JSONObjectWithData(NSData!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
for record in records {
// let urlid = Int(record["slide_id"] as! String)
let urimage = record["slide_url"] as! String
self.urls = [urimage]
print(self.urls.count)
}
}
catch {
print("Json Error")
}
}
task.resume()
当我打印时:
print(urimage)
它给了我4个这样的网址:
我打印时:
print(urimage[1])
它给了我: '下标'不可用:不能使用Int下标String,请参阅文档注释以供讨论
当我把它放在另一个值时:
var urls = [String]()
self.urls = [urimage]
我打印:
print(self.urls.count)
它给了我
1
1
1
1
如何在earch上访问其中一个网址!?
我想在imageview上展示它们,但我可以!
答案 0 :(得分:1)
正如Julian Kniephoff正确提到的那样,你在for循环中打印每个URL,因此你无法访问一个特定的URL。但是,还有另一个问题,那就是每次都用最新的url替换urls
数组。
要解决此问题,只需将行self.urls = [urimage]
替换为self.urls.append(urimage)
。
然后,您可以通过执行for
之类的操作来访问在self.urls[1]
循环之外的特定图像。
这也是print
数组计数返回1的原因,因为每次你都将数组设置为循环中的一个最新元素。
最后,您的代码可能看起来像这样
url = NSURL(string: "http://xxxxxxxxxxx.com/api/?slider=uij6sdnb")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url) {(data, response, error) -> Void in
do {
let records = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
for record in records {
//let urlid = Int(record["slide_id"] as! String)
let urimage = record["slide_url"] as! String
self.urls.append(urimage)
}
print(self.urls[1]) //Prints http://sdkladlkasjd2.jpg
}
catch {
print("Json Error")
}
//print(self.urls[1])
}
task.resume()