在UITableView - Realm中将结果转换为dataSource的List时出错

时间:2017-05-07 13:09:02

标签: ios uitableview realm

当使用fatal error: unexpectedly found nil while unwrapping an Optional value List作为我的tableView的数据源时,我一直收到错误Results

我知道我可以使用Results作为我的数据源,实际上我尝试了它并且工作正常,但我不想在我的TableView中显示第一项,那就是&#39}为什么我要将Results转换为List,以便能够将其从Results中删除,而无需将其从Realm中删除。

我在这里缺少什么?

这是代码......

var lists : List<ItemList>!

override func viewDidLoad() {
    super.viewDidLoad()

    updateLists()
}

func updateLists(){
    let allLists = realm.objects(ItemList.self)

    // Convert Results to List to be able to remove first item
    var lists: List = List(allLists)
    lists.remove(at: 0)
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return lists.count  // error points here
}

它不应该是nil,这是输出...... print("\(realm.objects(ItemList.self))")

Results<ItemList> (
    [0] ItemList {
        listName = List One;
        createdAt = 2017-05-06 01:12:47 +0000;
        items = RLMArray <0x6180002e4200> (
            [0] Item {
                productName = Bananas;
                createdAt = 2017-05-06 18:23:59 +0000;
            },
            [1] Item {
                productName = Grapes;
                createdAt = 2017-05-07 11:37:33 +0000;
            }
        );
    },
    [1] ItemList {
        listName = List Two;
        createdAt = 2017-05-06 18:16:14 +0000;
        items = RLMArray <0x6180002e4180> (
            [0] Item {
                productName = Apples;
                createdAt = 2017-05-06 18:16:14 +0000;
            },
            [1] Item {
                productName = Oranges;
                createdAt = 2017-05-06 18:16:14 +0000;
            }
        );
    }
)

错误:指向numberOfRowsInSection方法

  

致命错误:在解包可选值时意外发现nil

1 个答案:

答案 0 :(得分:1)

您在updateLists()方法中实例化了另一个lists数组实例。 尝试像这样修复:

// Convert Results to List to be able to remove first item
var lists: List = List(allLists)
self.lists = lists
self.lists.remove(at: 0)