类型[AnyObject]的不可变值只有名为'removeAtIndex'的变异成员

时间:2015-06-29 21:58:24

标签: ios swift core-data

我有一个名为Folder的核心数据子类。它有一个名为items的属性,它是NSOrderedSet类的Item。我有一个函数返回一个已排序的Items数组,用于在UITableView中显示的文件夹实例,但由于以下错误,我无法removeAtIndex;

  

类型[AnyObject]的不可变值仅具有命名的变异成员   'removeAtIndex'

从表格视图中删除项目时,这是针对以下代码的。

 context.deleteObject(selectedFolder.itemArray()[indexPath.row] as NSManagedObject )
 selectedFolder.itemArray().removeAtIndex(indexPath.row) //error occurs here

这是我创建函数的子类的代码:

class Folder: NSManagedObject {

@NSManaged var title: String
@NSManaged var details: String
@NSManaged var date: NSDate
@NSManaged var item: NSOrderedSet


func itemsArray() -> [Item] {
    let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
    return item.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
}

}

如何使我的任何对象数组可变以删除实例的项目?

1 个答案:

答案 0 :(得分:0)

返回类型是不可变的常量数组。您应该创建数组的副本以使其可变。当您将其简单地分配给另一个变量时,将在Swift中复制值类型。

var itemArray = selectedFolder.itemArray() // notice var which makes it mutable
itemArray.removeAtIndex(indexPath.row)

然后,在之后使用itemArray。