【问题标题】:why are my items not going into the array? Xcode and swift NSURLSession为什么我的物品没有进入阵列? Xcode 和 Swift NSURLSession
【发布时间】:2016-08-15 22:57:16
【问题描述】:

我正在使用 Swift 和 Xcode,我已经使用以下变量构建了模型对象:

var itemImageNames: [String]?
var itemTitle: String?
var itemDescription: String?
var itemURL: String?

在主视图控制器中,我创建了一个模型类型的变量。我正在启动一个 NSURLSession...dataTaskWithURL... 并添加我通过使用 append 从服务器收到的 itemImageNames。数据返回有效,我已经对其进行了解析,并且确实以字符串的形式返回。我尝试了两种解决方案,

  1. 从图像中创建一个字符串数组并将该数组设置为 self.item.itemImageNames?

        do {
            if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String: AnyObject]] {
    
                var imageURLs: [String] = [""]
    
                for dictionary in json {
                    if let imageURL = dictionary["url"] as? String {
                        imageURLs.append(imageURL)
                        print(imageURL)
                    }
                }
    
                self.featuredItem.itemImageNames? = imageURLs
    
  2. 使用 self.item.itemImageNames?.append(image) 附加每个字符串

        do {
            if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String: AnyObject]] {
    
                for dictionary in json {
                    if let imageURL = dictionary["url"] as? String {
                        self.featuredItem.itemImageNames?.append(imageURL)
                        print(imageURL)
                    }
                }
    

由于某种原因,itemImageNames 仍然为零,使用这两种方法。如果我只使用一张图片(例如第一张图片)并将 itemImageNames 更改为“String?”,我相信它会起作用。

此外,我可以轻松地更新 itemTitle、itemDescription 和 itemURL,只需将它们分别设置为 self.item.itemTitle、self.item.itemDescription、self.item.itemURL。关于如何将信息输入数组,我有什么遗漏吗?

【问题讨论】:

  • 您能否提供示例代码,说明您如何尝试将数据从 NSURLSession 添加到 itemImageNames 数组?那会很有帮助。
  • 嗨,我刚刚更新了这个问题。谢谢!
  • 在 #1 中,我不确定那是什么?会在你的最后一行做。如果您删除该问号,它是否有效?在 #2 中,验证 itemImageNames 不是 nil,因为附加到 nil 数组基本上什么都不做。
  • 谢谢,Rich 和 conarch!两个答案都解决了问题。

标签: arrays swift xcode nsurlsession


【解决方案1】:

在方法 #2 中,在尝试追加之前初始化 itemImageNames 数组。如果你尝试追加到一个 nil 的数组,那么什么都不会发生。

itemImageNames = []

for dictionary in json {
    if let imageURL = dictionary["url"] as? String {
        self.featuredItem.itemImageNames?.append(imageURL)
        print(imageURL)
    }
}

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 2019-01-20
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多