Ошибка области (поток 1: фатальная ошибка: init (область: схема :) не была реализована) - PullRequest
0 голосов
/ 05 марта 2019

Я получил ошибку, когда я сохранил данные Thread 1: Fatal error: init(realm:schema:) has not been implemented в своей кнопке. Я хочу сохранить данные, которые пользователь выбрал, и в то же время я хочу отобразить их, но когда я нажимаю на кнопку, чтобы сохранить мои данные, я получил ошибкуи я уверен, что в моих данных нет nil. Я надеюсь, что мое объяснение проблемы ясное.

мой код: модель:

import Foundation
import UIKit
import RealmSwift
import Realm
class Foods : Object {
@objc dynamic var name = ""
@objc dynamic var price = 0.0
@objc dynamic var descriptionn = ""
@objc dynamic var time = ""
@objc dynamic var rating = 0.0
 var image:UIImage?
@objc dynamic var count = 0.0

init(name : String,price : Double , count:Double ,description : String,time : String,rating : Double,image : UIImage) {
    self.name = name
    self.price = price
    self.descriptionn = description
    self.time = time
    self.rating = rating
    self.image = image
    self.count = count
    super.init()
}

init(name : String,price : Double) {
    self.name = name
    self.price = price

    super.init()
}

required init() {
    name = ""
    price = 0.0
    super.init()
}


required init(realm: RLMRealm, schema: RLMObjectSchema) {
    fatalError("init(realm:schema:) has not been implemented")
}

required init(value: Any, schema: RLMSchema) {
    fatalError("init(value:schema:) has not been implemented")
}



 }

мой UITableViewCell:

import UIKit
import HCSStarRatingView
import GMStepper
import RealmSwift

class FoodsSecoundTableViewCell: UITableViewCell {
@IBOutlet weak var foodTitle: UILabel!
@IBOutlet weak var foodPrice: UILabel!
@IBOutlet weak var foodRating: HCSStarRatingView!
@IBOutlet weak var foodImage: UIImageView!
@IBOutlet weak var steperCount: GMStepper!
@IBOutlet weak var btnSend: UIButton!
var result : Double?
let realm = try! Realm()

weak var delegate: FoodsSecoundTableViewCellDelegate?

override func awakeFromNib() {
    super.awakeFromNib()
    btnSend.layer.cornerRadius = 23
    btnSend.layer.borderColor = UIColor.white.cgColor

    if steperCount.value == 0 {
    btnSend.isEnabled = false

    } else if steperCount.value > 0{
        btnSend.isEnabled = true

    }


}


override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}
@IBAction func myStepper(_ sender: GMStepper) {

    delegate?.stepper(sender, at: sender.tag, didChangeValueTo: sender.value)


}


@IBAction func btnSendIt(_ sender: Any) {

    print(foodPrice.text)
    let myFood = Foods(name: foodTitle.text!, price: Double(foodPrice.text!)!)
    try! realm.write {
        realm.add(myFood)
    }

    let  result = realm.objects(Foods.self)

    for food in result {
        print(food.name)
        print(food.price)


    }

}

}

1 Ответ

0 голосов
/ 05 марта 2019

Вам не нужно реализовывать все функции init(), которые у вас есть выше.Вместо этого попробуйте следующее: -

  • Удалите функции required init, так как я предполагаю, что вы добавляете их для компиляции.Обычно они не нужны.
  • Для инициализаторов, которые вы хотите реализовать (я предполагаю, что это первые два выше), добавьте ключевое слово convenience перед init.
  • Использованиеself.init() в начале ваших собственных инициализаторов.

Таким образом, весь ваш код инициализатора должен быть таким, как показано ниже.

convenience init(name : String,price : Double , count:Double ,description : String,time : String,rating : Double,image : UIImage) {
    self.init()
    self.name = name
    self.price = price
    self.descriptionn = description
    self.time = time
    self.rating = rating
    self.image = image
    self.count = count
}

convenience init(name : String,price : Double) {
    self.init()
    self.name = name
    self.price = price    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...