我有这样的API调用:
var items = []
override func viewDidLoad() {
let url = NSURL(string: "API.php")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
super.viewDidLoad()
}
我要做的是将每个项目添加到数组项目中,我尝试了以下内容:
items += [NSString(data: data, encoding: NSUTF8StringEncoding))
但是没有用,有谁知道怎么做?我是新来的,今天早上很快。
当我说它不起作用时,它只取了我的ajax数据并将其作为一个字符串。
答案 0 :(得分:0)
首先:避免使用无类型的空数组文字,因为该语言不可能为您提供所需内容。上次我尝试var items = []
之类的东西,它给了我一个NSArray。替代方案是Any的数组 - 当你有泛型类型时,这些都不是理想的。
我的首选是为空数组使用类型化数组初始值设定项,如下所示:
var items = [String]()
在您的数据任务回调中,在您检查是否存在错误之后,继续.append()
数据到阵列。
另一件事:如果这将用于填充表视图,仅仅将项添加到数组是不够的。您需要使用dispatch_async(dispatch_get_main_queue()) { self.tableView.reloadData() }
。
答案 1 :(得分:0)
您的代码
var items = []
定义了一个不可变的NSArray
实例。
您应该将其定义为
var items = [NSString]()
if let item = NSString(data: data, encoding: NSUTF8StringEncoding){
items.append(item) //or items += [item]
}
答案 2 :(得分:0)
试试这个,
1)项目的Init MutableArray:
let home_image:NSMutableArray=NSMutableArray()
let home_title:NSMutableArray=NSMutableArray()
let home_pdf:NSMutableArray=NSMutableArray()
let home_sqft:NSMutableArray=NSMutableArray()
let home_savings:NSMutableArray=NSMutableArray()
let home_price:NSMutableArray=NSMutableArray()`
2)从您的API响应(结果)中获取您的项目数据,并将项目添加到mutableArray
var temp: NSString = data.valueForKey("home_image") as! NSString!
self.home_image.addObject(temp)
temp = data.valueForKey("home_title") as! NSString!
self.home_title.addObject(temp)
temp = data.valueForKey("home_pdf") as! NSString!
self.home_pdf.addObject(temp)
temp = data.valueForKey("home_sqft") as! NSString!
self.home_sqft.addObject(temp)
temp = data.valueForKey("home_savings") as! NSString!
self.home_savings.addObject(temp)
temp = data.valueForKey("home_price") as! NSString!
self.home_title.addObject(temp)