为啥我的阵列没有消耗我发送给它的信息?斯威夫特 4

Posted

技术标签:

【中文标题】为啥我的阵列没有消耗我发送给它的信息?斯威夫特 4【英文标题】:Why is my array not consuming the information I send to it? Swift 4为什么我的阵列没有消耗我发送给它的信息?斯威夫特 4 【发布时间】:2017-11-09 18:05:08 【问题描述】:

嗨,我对这个 swift 很陌生,但我知道一点,我正在尝试在我的数组中插入一个图像和 2 个文本,如下所示:

@IBAction func doneEditing(_ sender: Any) 
    insertNewActy()
    print(myCellRows, "Saved")




func insertNewActy()

    addTitles = addTitle.text!
    addLocations = addLocation.text!
    newImages = newImage.image!

    let element = MyCellRows(image: newImages,
                             title: addTitles,
                             location: addLocations)

    myCellRows.insert(element, at: 0)

     

我有 3 个变量,UIImage 之一和 String 中的 2 个

但是当我按下doneEditing 按钮时没有任何反应

也许我已经放了这个

addTitles = addTitle.text!
addLocations = addLocation.text!
newImages = newImage.image!

在错误的地方?

我的数组看起来像这样

import UIKit

var myCellRows: [MyCellRows] = []

class ActyViewController: UIViewController 

@IBOutlet weak var myTableView: UITableView!


func createMyCellArray() -> [MyCellRows] 

    var myCells: [MyCellRows] = []

    let dog = MyCellRows(image: #imageLiteral(resourceName: "Dog"),
                         title: "Dog",
                         location: "America")
    let cat = MyCellRows(image: #imageLiteral(resourceName: "Cat"),
                         title: "Cat",
                         location: "Sweden")
    let rabbit = MyCellRows(image: #imageLiteral(resourceName: "Rabbit"),
                         title: "Rabbit",
                         location: "Germany")
    let tiger = MyCellRows(image: #imageLiteral(resourceName: "Tiger"),
                         title: "Tiger",
                         location: "Africa")

    myCells.append(dog)
    myCells.append(cat)
    myCells.append(rabbit)
    myCells.append(tiger)

    return myCells


我想要完成什么?

我正在尝试将 users Library on the phone 中的带有 2 个自定义文本和 1 个图像的新单元格添加到我的表格视图中。 tableView 代码是正确的,工作正常。

感谢您的宝贵时间。 :)

注意:我在我的tableViewclass 中使用myTableView.reload() viewDidAppear

【问题讨论】:

你必须使用'MyCellRows'还是你可以改变它的类型来输入字符串 @NiallKehoe 我会,但我也想插入图像,我可以这样做还是必须先创建一个字符串数组,然后再创建一个带图像的数组? 【参考方案1】:

您需要将 MyCellRows 实例传递给 myCellRows.insert(_:at:) 调用。如果你想同时插入图片和文字,你可以实例化一个新的MyCellRows(image: ???, title: addTitle.text!, location: ???)

如果您想插入一个有标题但没有图像或位置的行,则必须进行一些重新架构。您可以将MyCellRows 上的imagelocation 变量设为可选(UIImage?String?),然后传递image: nillocation: nil,例如:

myCellRows.insert(MyCellRows(image: nil, title: addTitle.text!, location: nil))

【讨论】:

我试图同时insert图像、标题和位置,对不起,如果我有点慢,但我是新手,呵呵,我要去insert这个代码?在insertNewTitle 函数中? 我照你说的做了我写了这个funcinsertNewTitle()myCellRows.insert(MyCellRows(image:newImages,title:addTitles,location:@9876544340@@98765444341@at: 0)987654342at: 0)9876 987654345@addLocations=addLocation.text!addTitles=addTitle.text! 请看我是用这 3 个变量做的,因为我需要将它们转换为 Type String 和 Type UIImage 现在我没有收到任何错误,但是当按下 DoneEditing 按钮时没有任何反应【参考方案2】:

您收到错误是因为数组“myCellRows”包含“MyCellRows”类型的元素,但在func insertNewTitle() 中,您尝试插入字符串类型的元素。 要解决该错误,您必须确保在 func insertNewTitle() 中创建“MyCellRows”类型的实例,然后将元素附加到“MyCellRows”数组。

func insertNewTitle()

let element = MyCellRows(image: #imageLiteral(resourceName: "image"),
                         title: addTitle.text!,
                         location: "Location")

myCellRows.insert(element, at: 0)


【讨论】:

我也试过了,我没有收到任何错误,但是当我点击完成时什么也没有出现...... tableView.reloadData() 更新数据数组后。 @PhoneyDeveloper 嘿,我在哪里实现这个功能?在viewDidLoad()? @PhoneyDeveloper 我在viewDidAppear() 中写了它但仍然没有任何反应检查我的问题我已经编辑了一点 但是 insertNewActy() 或 insertNewTitle() 必须响应用户操作而发生。无论何时,您都必须再次 reloadData() 。更新数据模型后,您必须重新加载数据()。然后 cellForRowAtIndexPath 将为每个可见行再次调用。

以上是关于为啥我的阵列没有消耗我发送给它的信息?斯威夫特 4的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 CAShapeLayer 没有动画? (iOS 斯威夫特)

在 Appium Sendkeys 中没有按预期工作,它发送的比我给它的多

为啥我的 8M L3 缓存对大于 1M 的阵列没有任何好处?

错误:执行被中断,原因:断点 1.2。 Xcode 7.1,斯威夫特

为啥录制的音频的持续时间是负数? (iOS / 斯威夫特)

TextView 没有保留我给它的值