Ios 将NSSet转换为NSMUTABLEARRY
目前,我有一个名为Folder的NSManaged对象的子类,其属性名为item,类型为NSSetIos 将NSSet转换为NSMUTABLEARRY,ios,swift,uitableview,core-data,Ios,Swift,Uitableview,Core Data,目前,我有一个名为Folder的NSManaged对象的子类,其属性名为item,类型为NSSet class Folder: NSManagedObject { @NSManaged var title: String @NSManaged var date: NSDate @NSManaged var item: NSSet func itemMutableArray() -> NSMutableArray { var mutableArray: NSMutableArr
class Folder: NSManagedObject {
@NSManaged var title: String
@NSManaged var date: NSDate
@NSManaged var item: NSSet
func itemMutableArray() -> NSMutableArray {
var mutableArray: NSMutableArray!
mutableArray = [item.allObjects]
return mutableArray
}
项目类别:
class Item: NSManagedObject {
@NSManaged var title: String
@NSManaged var date: NSDate
@NSManaged var completed: Bool
有人对我目前的错误有什么建议吗
这是我以前使用的函数,现在我想将NSSet转换为NSMUTABLEARRY
func itemArray() -> [Item] {
let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
return item.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
}
使用Swift类型,它们更通用 这将NSSet放入一个数组(
var
是可变的),并按属性date
@NSManaged var title: String
@NSManaged var date: NSDate
@NSManaged var item: NSSet
var sortedItemArray : Array<Item> {
var array = item.allObjects as! [Item]
return sorted(array) {$0.date < $1.date }
}
@NSManaged var title:String
@NSVAR托管日期:NSDate
@NSVAR管理项:NSSet
Marray的变量:数组{
var array=item.allObjects as![item]
返回排序(数组){$0.date<$1.date}
}
.copy始终记住获取内容的副本()。在此之后,如果仍然出错,则与数组无关。抱歉,我是iOS开发新手,不确定您所说的使用复制方法是什么意思。allKeys不会创建数组(除非Swift创建数组,这通常在您更改内容时发生),您会得到一个指针。在大多数语言中,变量只指向内存。换句话说,在获得克隆之前,您没有自己的。所有密钥。感谢您的建议,不幸的是,这并不能解决问题problem@JKSDEV问题是如何从NSSet转换为NSMUTABLEARRY。我想问题已经回答了你改变了答案,不确定到底发生了什么。我的问题中确实包含了Item类。现在我来试试你的建议。在我的类外语句中使用时出现错误“表达式不允许在顶层”,在括号中使用时出现错误“预期声明”。我想问题分为两部分。您回答了如何转换为NSMutableArray,并帮助我创建了一个新函数,因此我们将为您提供答案。将针对表视图中的错误发布新问题。我真的很感谢你花时间在(Y)中,我喜欢你的建议,但不幸的是,我得到了以下错误“无法为接受“[(项],(,-)->”类型参数列表的“排序”找到重载”什么类型是Item
?Item是NSSet类型,是nsmanagedObject的一个子类,具有string、bool和date三个属性。文件夹与项目具有一对多关系。
@NSManaged var title: String
@NSManaged var date: NSDate
@NSManaged var item: NSSet
var sortedItemArray : Array<Item> {
var array = item.allObjects as! [Item]
return sorted(array) {$0.date < $1.date }
}