Swift - 从API调用向数组添加项目

时间:2015-08-18 16:08:54

标签: ios swift

我有这样的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数据并将其作为一个字符串。

3 个答案:

答案 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)