2016-12-02 62 views
-2

我有一個叫做Task的Realm對象。我在表格視圖中顯示這些任務。我有一個變量decalred來容納這些對象。初始化一個空結果<T>變量

var tasks: Results<Task>! 

在初次啓動時,我從API獲取這些任務。直到當地領域是空的。但是,當加載UITableViewController時,它會觸發數據源方法。在這一點上,tasks變量仍然可以爲零。所以該應用程序崩潰在像numberOfRowsInSection方法。

如何初始化上述變量以使其處於空狀態並且不會導致崩潰?

回答

1

因此,在方法的應用程序崩潰像numberOfRowsInSection

別讓它。 你是是導致死機的人,通過假設tasks不是nil,實際上它可以是。 您的工作要檢查numberOfSections看是否tasksnil。如果是,返回0,這樣就不會被問到任何其他問題。

0

如果你的屬性可以是零,你應該像這樣財產申報:

var tasks : Results<Task>? 

,然後用它像

guard let tasks = tasks 
else 
{ 
    // It's still nil 
    return 
} 

當你確定它不是零,您可以使用

tasks! 

但根據問題,如果給定的屬性可以初始化沒有參數(或與),你可以做它李ke so:

var tasks = Results<Task>() 

上面的代碼對於聲明空數組時很有用。

+0

這仍然有效嗎?現在編譯器不接受'結果()'。錯誤狀態:'不能用無參數調用初始化程序';當'Results'從'NSObject'繼承(Realm 2.8.3)時,我無法找到覆蓋'init', –