gpt4 book ai didi

arrays - 快速添加对象

转载 作者:IT王子 更新时间:2023-10-29 05:29:40 25 4
gpt4 key购买 nike

所以,我正在学习如何使用 JSON 从数据库中获取数据,然后将数据放在某个数组中。问题出现在最后一行,citiesArray.addObject(City()),当我需要将对象 city 中的所有数据(id、名称、州...)入数组。我用编译器逐行查看,基本上一切都很好,除了最后,我的数组仍然是空的(它的值为 nil)?

for (var i=0;i<jsonArray.count;i++){
//Create city objec
var cID: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("id") as NSString
var cName: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("cityName") as NSString
var cState: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("cityState") as NSString
var cPopulation: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("cityPopulation") as NSString
var cCountry: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("country") as NSString

//add city obj (i have City class) to city array
var city = City()

city.cityID = cID as NSString
city.cityName = cName as NSString
city.cityState = cState as NSString
city.cityPopulation = cPopulation as NSString
city.cityCountry = cCountry as NSString

citiesArray.addObject(City())
}

最佳答案

几个问题:

  1. 您建议您尝试使用以下代码行添加城市:

    citiesArray.addObject(City())

    City() 构造将实例化一个新的空白 City 对象。因此,在最好的情况下,该行代码会向您的数组添加一个空白的 City 对象,这不是您想要的。

    当您将 city 添加到您的 citiesArray 时,您应该简单地:

    citiesArray.addObject(city)
  2. 你说你已经像这样定义了你的 citiesArray:

    var citiesArray: NSMutableArray!

    您还需要为此变量实例化一个对象(即创建一个该变量现在指向的对象),例如:

    citiesArray = NSMutableArray()
  3. 不过,您报告说,在此循环结束时,citiesArraynil。真的?!?但是,如果您尝试调用 addObject 方法并且 citiesArraynil,您可能会收到一个 fatal error :“unexpectedly found nil while unwrapping an可选值”。

    所以,如果 citiesArraynil,那么 jsonArray 也一定是空的。或者由于某种原因你甚至没有进入这个循环。我建议 (a) 记录 jsonArray; (b) 在这个循环中记录或放置断点,并确认你是否像你认为的那样进入这里。

    此外,请检查此时间(即确保您的语句记录 citiesArray 实际上发生在填充它的例程之后)。我知道这听起来很疯狂,但如果您从某些网络资源异步检索数据,您可能会遇到一些与时间相关的问题。

  4. 由于您正在编写 Swift 代码,因此您可能会考虑使用 Swift 数组。例如,将您的数组变量定义为

    var citiesArray: [City]!

    并实例化它:

    citiesArray = [City]()

    并向其中添加对象:

    citiesArray.append(city)

关于arrays - 快速添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com