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】:

如果您定义了 NSManagedObjectList 实例,您的 myList 将包含该类的子类。每个对象都将具有您为该核心数据对象定义的属性。

indexPath 是一个类,用于表示UITableViewrowsection。这也用于识别UICollectionViewitemsection

【讨论】:

所以如果我将我的对象定义为属性:用户名和类型:字符串,我的数组将由字符串组成? 不,它将是NSManagedObjects 的数组。要获取 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 和核心数据 - 数组和单元格基础的主要内容,如果未能解决你的问题,请参考以下文章

停止重复使用自定义单元格 Swift

使用 NSFetchedResultsController 核心数据重新排序 TableView 单元格 - Swift 3

具有自定义单元格和多节数组数据的 Swift UITableView

从数组中设置自定义单元格 uibutton 标题 - Swift

解析对象数组并填充表格视图单元格 Swift

如何在 iOS Swift 中将选定的 tableView 单元格保存到数组中?