在标记为重复之前:我已经研究并发现了很多关于这个主题的主题,但是所有主题都通过使用_ =来消除警告来解决它。我不想让警告沉默。我想使用结果!
我正在我的应用中创建一个消息传递功能,并尝试将传入/传出消息对齐到左/右侧。我有一个名为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
}
答案 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,这将有助于您更好地掌握语言,并随后帮助您编写工作代码。