2017-03-06 5 views
0

にオブジェクトを追加するシグナルSIGABRT私は三つのクラスを定義します。スウィフトとレルム:取得スレッド1:リスト

CoffeeBrand:

dynamic var brandName = "" 
let brands = List<Coffee>() 

コーヒー:

dynamic var name = "" 
let cupAmount = List<CoffeeCup>() 

CoffeeCupの:

dynamic var cup = 0 
dynamic var caffeine = 0 

もう一度試してみたいそれは表のようになりますどのようにしようとするブランドスターバックスは

class CoffeeListsTableViewController: UITableViewController { 

    // MARK: Properties 
    var brands: Results<CoffeeBrand>! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let Starbucks = CoffeeBrand(value: ["Starbucks",["Iced Latte", [200,150],[500,150]]]) 

     try! realm.write() { 
      realm.add(Starbucks) 
     } 
    } 
} 

を見たしかし、私が得たことは、「スレッド1:信号SIGABRT」である、と私は、私はこれは私がグーグルスレッド1(なく動作すべきだと思うことを確認しましたこのの表データ・ソースにして)他人のquestionesから間違っているものを見つけるために

を試してみてください。

override func numberOfSections(in tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 
    //let cellIdentifier = "CoffeeBrandTableViewCell" 
    let cell = tableView.dequeueReusableCell(withIdentifier: "CoffeeBrandTableViewCell", for: indexPath) as! CoffeeBrandTableViewCell 
    // in my cell, only a label of brandName 
    let brandList = brands[indexPath.row] 
    cell.brandName.text = brandList.brandName 
    return cell 
} 

答えて

0

そのコードのルックスから、あなたがbrandsに値を代入していません。ブランドを明示的にアンラップして宣言しているため、問題が発生している可能性があります。余談として

class CoffeeListsTableViewController: UITableViewController { 

    // MARK: Properties 
    let brands = try! Realm().objects(CoffeeBrand.self) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
} 

realm.addは、レルムのデータベースにそれが呼び出されるたびに新しいオブジェクトを追加します。現在のコードでは、ビューコントローラが読み込まれるたびにStarbucksオブジェクトの新しいコピーを追加します。レルムにオブジェクトを追加するときに、より多くのコントロールを追加する方が適切です。

+0

いいえ、これは問題ではありません。私はこれを前に試して、「スレッド1:EXC_BAD_INSTRUCTION」を取得します。 – whatever123

関連する問題