как правильно добавить что-либо в массив? - PullRequest
0 голосов
/ 29 мая 2019

Я собираюсь создать собственную ячейку, на которой уже есть несколько меток, затем я создаю объект и массив ячейки, пытаюсь добавить этот объект в массив, затем показать в таблице, но после добавления в моем содержимом нет содержимого.свойства массива

Я пытался найти решения, но, вероятно, ни у кого нет этих проблем

// tableview Implement

var recordCell : [RecordCell] = []
let note = RecordCell()

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.recordCell.count
    }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = self.tableView.dequeueReusableCell(withIdentifier: "recordCell",for: indexPath) as! RecordCell
        let indexPath = indexPath.row


        cell.recordFileName?.text = self.recordCell[indexPath].recordFileName?.text
        cell.recordDate?.text = self.recordCell[indexPath].recordDate?.text
        cell.delegate = self
        cell.playBtn.tag = indexPath
        return cell
    }

// добавляем в массив

let alertController = UIAlertController(title: "請輸入錄音名稱", message: "錄音名稱", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: .default) { (_) in
            var name : String = ""
            if(alertController.textFields![0].text == ""){
                name = "record"
            }else{
                name = alertController.textFields![0].text!
            }

            guard self.audioRecorder == nil else{return}
                self.recordNumber += 1
                self.record.isEnabled = false
                self.pause.isEnabled = true
                self.stop.isEnabled = true
                let destinationUrl = self.getFileURL().appendingPathComponent("\(name).m4a")

                let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
                                AVSampleRateKey: 44100,
                                AVNumberOfChannelsKey: 2,
                                AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
                ]

                do {
                    self.audioRecorder = try AVAudioRecorder(url: destinationUrl, settings: settings)
                    self.audioRecorder.record()
                    self.note.recordFileName?.text = name
                    self.note.recordDate?.text = self.getDate()
                    self.recordCell.append(self.note)
                } catch {
                    print("Record error:", error.localizedDescription)
                }

        }
        let cancelAction = UIAlertAction(title: "取消", style: .cancel) { (_) in
            self.dismiss(animated: true, completion: {
                self.audioRecorder.stop()
            })
        }
        alertController.addTextField { (textField) in
            textField.placeholder = "輸入名稱"
            textField.keyboardType = .default
        }
        alertController.addAction(okAction)
        alertController.addAction(cancelAction)
        self.present(alertController,animated: true,completion: nil)
    }

Я ожидаю, что когда я добавляю что-то, в массиве что-то есть

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Я не увидел ничего плохого.

Вы уверены, что ваш код называется?Попробуйте дать print () прямо перед добавлением и посмотрите, вызван ли он.

Возможно, он не вызван из-за guard self.audioRecorder == nil else{return}

0 голосов
/ 29 мая 2019

После добавления нового значения в массив, вызовите insertRows метод, подобный этому

self.recordCell.append(self.note)
self.tableView.insertRows(at: [IndexPath(row: recordCell.count-1, section: 0)], with: .automatic)
...