我正在尝试使用iPhone应用中的网站上的文字。为此,我使用网络剪贴簿Osmosis。我设法检索我想要的数据但我不能影响到数组的数据,以便在函数之外使用它。这是我所做的一小部分:
class ViewController: UIViewController {
@IBOutlet weak var quote: UILabel!
private var array: [[String: AnyObject]] = []
var initArray: [[String: AnyObject]] {
get {
return array
}
set {
for e in self.initArray {
array.append(e)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
getQuotes()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func getQuotes()
Osmosis(errorHandler: { (error) -> Void in
print(error)
})
.get(NSURL(string: "http://www.example.com")!)
.find(OsmosisSelector(selector: ".parentDiv"), type: .CSS)
.populate([
OsmosisPopulateKey.Single("quotes") : OsmosisSelector(selector: ".childDiv")
], type: .CSS)
.list { (dict) -> Void in
self.array.append(dict)
print(self.initArray) // this prints data
}
.start()
print(self.initArray) // This prints an empty array
}
}
我想我不能使用数组,因为它填充在Osmosis()
的init中,但我想知道如何在我的代码中的其他地方使用它。你能解释我的代码中发生了什么(为什么我只能在.list()
中使用数据)以及如何解决这个问题。
修改 我尝试使用getter和setter来检索范围之外的数据,但结果与没有getter / setter的结果相同。
答案 0 :(得分:0)
您想将一个数组的所有元素添加到另一个数组吗?
for e in quotesArray {
self.array.append(e)
}
或
self.array.appendContentsOf(quotesArray)
答案 1 :(得分:0)
根据Christian Dietrich的回答和评论,我设法通过更新我的范围内的UI来解决我的问题。
这就是我的所作所为:
import UIKit
import Osmosis
class ViewController: UIViewController {
@IBOutlet weak var quote: UILabel!
var array: [[String: AnyObject]] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
getQuotes()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func getQuotes() {
var updateText: String = ""
Osmosis(errorHandler: { (error) -> Void in
print(error)
})
.get(NSURL(string: "http://www.exemple.com")!)
.find(OsmosisSelector(selector: ".wrapper"), type: .CSS)
.populate([
OsmosisPopulateKey.Single("div") : OsmosisSelector(selector: ".div")
], type: .CSS)
.list { (dict) -> Void in
self.array.append(dict)
updateText = self.array[0]["div"] as! String
self.quote.text = updateText
self.view.setNeedsDisplay()
}
.start()
}
}
感谢您的帮助!