使用 CoreData 数据库填充 NSMutableArray

Posted

技术标签:

【中文标题】使用 CoreData 数据库填充 NSMutableArray【英文标题】:populate NSMutableArray using the CoreData database 【发布时间】:2014-06-13 22:54:02 【问题描述】:

我正在尝试从 CoreData 数据库(使用 swift)填充 NSMutableArray,但不确定我做错了什么。这是我的代码:

var stuff: NSMutableArray = []

填充 NSMutableArray:

override func viewDidAppear(animated: Bool) 
    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext

    let freq = NSFetchRequest(entityName: "MyData")       
    stuff = context.executeFetchRequest(freq, error: nil)

    tableView.reloadData()


错误:

【问题讨论】:

【参考方案1】:

只需将stuff 定义为

var stuff : Array<AnyObject> = []

这会将stuff 创建为适合executeFetchRequest() 的返回类型的数组。

当您随后访问数组的元素时,您还需要满足类型约束。您应该查看 Apple 文档中的 asas?is 以及相关的使用示例。在最简单的情况下,它会是这样的:

var aThing : NSManagedObject? = stuff[0] as? NSManagedObject

如果stuff[0] 既不是NSManagedObject 也不是子类,则上述aThing 将是nil

【讨论】:

我如何用这种类型写 stuff.objectAtIndex(indexPath.row)? objectAtIndex() 将从您的 CoreData 模型返回实体。我相信它们将是 NSManagedObject (或您的子类)的实例。请参阅对上述答案的编辑。 是的,你可以用array[index]代替objectAtIndex()

以上是关于使用 CoreData 数据库填充 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

核心数据,用我的 JSON 填充我的 Coredata

UIPickerView 未填充从 CoreData 获取的数据

SwiftUI 移动列表单元格并在 CoreData 数据库中填充顺序

用 CoreData 对象填充 NSSet

Swift 2:使用两个 CoreData 实体填充 TableView

SwiftUI - 使用 CoreData 获取的结果来填充选取器