如何使用函数调用的结果数组获取“调用结果未使用”

时间:2018-04-05 20:16:34

标签: arrays swift function

在标记为重复之前:我已经研究并发现了很多关于这个主题的主题,但是所有主题都通过使用_ =来消除警告来解决它。我不想让警告沉默。我想使用结果!

我正在我的应用中创建一个消息传递功能,并尝试将传入/传出消息对齐到左/右侧。我有一个名为loadPosts()的函数,它返回值'incoming',它是一个值数组。我想在tableView中的setCell函数中使用这些结果来完成消息传递页面的格式。该应用程序正在运行,但我收到警告“loadPosts的结果未使用”,并且它没有加载查询的所有结果。代码包含在下面,我完全被卡住并感谢任何帮助:

var incoming = [String].self

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    loadPosts()
}


// Load Post Function
    func loadPosts()->[String] {
        self.hhmessages = messages
        for i in 0 ..< self.hhmessages.count {
          if me == self.hhmessages[i]["senderusername"]!! as! String {
                                let incoming = 0
                                return
                            }
          if me == self.hhmessages[i]["recipient"]!! as! String {
                                let incoming = 1
                                return


                }

                        return
          }

                    self.tableView.reloadData()
        }
    return incoming.init()
}

// TableView代码

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ConversationCell

    // shortcuts
    cell.messageLbl.text = messagetext
    cell.dateLbl.text = date
    cell.smavaImg.image = image
    cell.postpictureImg.image = smimages

    func setCell(incoming:[Int]) {
        var layoutAttribute: NSLayoutAttribute
        var layoutConstant: CGFloat
        let tempObj = incoming
        if incoming == [1] {
            print(tempObj, "incoming")
            cell.bubbleImageView.image=#imageLiteral(resourceName: "chat_bubble_received")
            cell.messageLbl.textColor = UIColor.black
            layoutAttribute = .left
            layoutConstant = 10
        }else {
            if incoming == [0] {
                print(tempObj, "outgoing")
                cell.bubbleImageView.image = #imageLiteral(resourceName: "chat_bubble_sent")
            }
            cell.messageLbl.textColor = UIColor.white
            layoutAttribute = .right
            layoutConstant = -10
        }
        cell.contentView.addConstraint(NSLayoutConstraint(item: cell.bubbleImageView, attribute: layoutAttribute, relatedBy: .equal, toItem: cell.contentView, attribute: layoutAttribute, multiplier: 1, constant: layoutConstant))

    }
    setCell(incoming: [Int()])
    return cell
}

1 个答案:

答案 0 :(得分:1)

由于您打算将loadPosts()的结果存储到incoming以供稍后使用,因此请执行此操作。将incoming属性键入为数组,如下所示:

var incoming: [Int] = []

这表明incoming应该具有类型[Int](即Int s的数组),并且应该初始化为空数组(因为我们不准备其内容但在对象的创作时。)

然后,当您致电loadPosts()时,只需将结果分配给incoming属性:

self.incoming = self.loadPosts()

然后您可以稍后参考self.incoming

请注意,假设incoming是一个Int的数组,左侧为0,右侧为1。虽然这在技术上有用,但我建议使用枚举,以便更清晰:

enum Direction {
    case left
    case right
}

然后您可以将属性键入:

var incoming: [Direction] = []

你可以像这样添加数组:

self.incoming.append(.left) // or .right

您还希望将loadPosts()的返回类型更改为返回[Direction]

请注意,即使执行此操作,您的代码在正确编译之前仍需要进行相当多的清理。我建议您阅读Swift Language Guide,这将有助于您更好地掌握语言,并随后帮助您编写工作代码。