使用 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 文档中的 as
、as?
和 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的主要内容,如果未能解决你的问题,请参考以下文章
UIPickerView 未填充从 CoreData 获取的数据
SwiftUI 移动列表单元格并在 CoreData 数据库中填充顺序