【问题标题】:Swift and core data - Array and cell basicsSwift 和核心数据 - 数组和单元格基础
【发布时间】: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”中究竟存储了什么?是不是就像一个带有用户名的字符串数组一样简单?

任何想法和解释将不胜感激。

【问题讨论】:

  • 你真的有两个问题。好消息是第二个答案在这里:stackoverflow.com/questions/10807827/…。你能把那部分拿出来,我们来回答第一个问题吗?
  • @dpassage 谢谢,非常有帮助。第一个问题已经提出来了。

标签: ios arrays uitableview core-data swift


【解决方案1】:

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

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

【讨论】:

  • 所以如果我将我的对象定义为属性:用户名和类型:字符串,我的数组将由字符串组成?
  • 不,它将是NSManagedObjects 的数组。要获取 NSString,您可以使用访问器:[myList objectAtIndex:i].username 其中i 是您需要的项目的索引号。
  • 好的,那我明白了。谢谢你:)
【解决方案2】:

executeFetchRequest 从 CoreData 数据存储中返回一个托管对象数组。基本上有两种处理方式。

首先是按原样使用它们。它们都将是NSManagedObject 的实例,您可以使用valueForKey: 之类的方法来获取它们的值。

第二种方法是定义您自己的NSManagedObject 子类,在您的情况下可能命名为List,然后在该对象上定义属性,允许您直接访问这些值。

Core Data 作为一个整体,既异常强大又异常复杂。我强烈建议您通过教程(Apple'sotherwise)来掌握它。 (请注意,Apple 的一些文档建议从称为 Core Data Starting Point 的内容开始。有帮助的是,Apple 已停用该文档,但尚未从其他文档中删除对其的引用。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多