''不是'''

时间:2015-04-11 12:00:22

标签: ios swift

我想传递Note类的数组作为函数的参数。

NoteRLMObject的子类,因此在我看来应该没问题。

private var notesSection = [Note]()

func add(inout sectionArray: [RLMObject]){

}

func addNote(){
    //Here is an error: Cannot invoke 'add' with an argument list 
    //of type '(sectionArray: inout [(Note)])'
    add(sectionArray: &notesSection)
}

我也尝试过施放数组:

let castedArray = notesSection as! [RLMObject]

但在这种情况下我收到一个错误:

  

'RLMObject'不是'Note'的子类型

1 个答案:

答案 0 :(得分:0)

Swift对类型严格。解决方案应该很简单。

如果您维护的数组仅包含Note,请确保添加Note个对象。如果您使用RLMObject维护数组,请确保只添加RLMObject

如果您的数组包含不同类型的对象,请使用AnyObject

我认为您的案例的最小努力是将[RLMObject]用于Note数组,然后在需要使用Note时进行转换。

最后,您似乎正在构建数组以填充表视图。您的设置似乎相当笨拙,并没有利用表视图的datasource机制。 IMO,您不需要嵌套数组的层次结构,特别是如果潜在的部分数量有限。如果您使用的是核心数据,请考虑使用NSFetchedResultsController