Swift 和核心数据 - 数组和单元格基础
Posted
技术标签:
【中文标题】Swift 和核心数据 - 数组和单元格基础【英文标题】:Swift and core data - Array and cell basics 【发布时间】:2014-12-22 20:53:18 【问题描述】:如果我将数组定义为:
var myList: Array <AnyObject> = []
然后使用 viewDidLoad 覆盖函数来填充这个数组,如下所示:
override func viewDidAppear(animated: Bool)
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext!
let freq = NSFetchRequest(entityName: "List")
myList = context.executeFetchRequest(freq, error: nil)!
tableView.reloadData()
我的“列表”只包含用户名作为字符串。 “myList”中究竟存储了什么?是不是就像一个带有用户名的字符串数组一样简单?
任何想法和解释将不胜感激。
【问题讨论】:
你真的有两个问题。好消息是第二个答案在这里:***.com/questions/10807827/…。你能把那部分拿出来,我们来回答第一个问题吗? @dpassage 谢谢,非常有帮助。第一个问题已经提出来了。 【参考方案1】:如果您定义了 NSManagedObject
或 List
实例,您的 myList
将包含该类的子类。每个对象都将具有您为该核心数据对象定义的属性。
indexPath
是一个类,用于表示UITableView
的row
和section
。这也用于识别UICollectionView
的item
和section
。
【讨论】:
所以如果我将我的对象定义为属性:用户名和类型:字符串,我的数组将由字符串组成? 不,它将是NSManagedObject
s 的数组。要获取 NSString,您可以使用访问器:[myList objectAtIndex:i].username
其中i
是您需要的项目的索引号。
好的,那我明白了。谢谢你:)【参考方案2】:
executeFetchRequest
从 CoreData 数据存储中返回一个托管对象数组。基本上有两种处理方式。
首先是按原样使用它们。它们都将是NSManagedObject
的实例,您可以使用valueForKey:
之类的方法来获取它们的值。
第二种方法是定义您自己的NSManagedObject
子类,在您的情况下可能命名为List
,然后在该对象上定义属性,允许您直接访问这些值。
Core Data 作为一个整体,既异常强大又异常复杂。我强烈建议您通过教程(Apple's 或 otherwise)来掌握它。 (请注意,Apple 的一些文档建议从称为 Core Data Starting Point 的内容开始。有帮助的是,Apple 已停用该文档,但尚未从其他文档中删除对其的引用。)
【讨论】:
以上是关于Swift 和核心数据 - 数组和单元格基础的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSFetchedResultsController 核心数据重新排序 TableView 单元格 - Swift 3
具有自定义单元格和多节数组数据的 Swift UITableView