在此示例中使用CoreData Entity的正确方法

时间:2015-04-28 06:30:12

标签: ios swift core-data

我有一个名为“Person”的CoreData实体,有3个属性

import Foundation
import CoreData

class Person: NSManagedObject {

@NSManaged var name: String
@NSManaged var image: NSData
@NSManaged var info: String

}

EDITED: 示例:(我认为我的第一个“桌子/椅子”示例引起了更多的混淆然后解释。)

我有7 UIButton个。点击UIButto n时,我的TableView被模态推送,TableView cell的所有可用Person的属性值通过

填充
var request = NSFetchRequest(entityName: "Person")
request.returnsObjectsAsFaults = false;
results = context.executeFetchRequest(request, error: nil)!

我希望能够双击cell,这将关闭TableView并返回主ViewController所选的Person,并将其附加到UIButton {1}}调用了TableView。此UIButton现在将显示已选择Person的图像,名称和信息(或者可以直接访问属性值)。

我应该如何做到这一点?

是否有NSFetchRequest方法,我只需输入类似......

的内容
NSFetchRequest(entityName: "Person", attributeName: "name", String == "John Doe")

如果是这样,我可以将“{name”值从TableView传递给Main ViewController,并通过类似的内容在主Person中存储ViewController引用。

var PassedNameString = "John Doe"
var Person1: Person = NSFetchRequest(entityName: "Person", attributeName: "name", String == PassedNameString) as! Person

通过这种方式,我可以参考Person实体填充“座位”并直接访问其信息以进行阅读或编辑。

我的CoreData理解非常低。

我只学会了如何创建/存储文件。我不了解回忆CoreData文件需要什么,如果需要可以编辑。我还不知道在获取Vs持有对CoreData条目的引用时对设备的要求是什么。

2 个答案:

答案 0 :(得分:0)

将CoreData视为您的数据库,它存储由模型结构分类的数据。

根据您的描述,我会在ViewController的加载序列中的某处(例如ViewDidLoad)执行获取请求,并将结果(Person对象)存储在人员数组中...... var persons = [Person]()。这可以是一个类变量。然后我将通过调用array [index]来访问Person对象。

请告诉我这是否有助于您的思考,或者您感到困惑的地方。

var persons = [Person]()

override func viewDidLoad() {
  ...do your fetch call...get back an array of objects as a result

  for person:Person in result {
    self.persons.append(person)
  }

  // now to access your Person objects anywhere in the class just call
  // self.persons[index] to get back an Person object 
}

答案 1 :(得分:0)

在你的视图中,控制器有一个数组(或者一个字典,如果它更适合你)。数组中的每个插槽代表一个椅子,数组的索引链接到您拥有的按钮(也应该在一个数组中)。主席数组包含Person的实例,并且最初为空。

表视图控制器应使用获取的结果控制器,在获取时具有批量大小。这用于照常填充表格。选择表格行时,应将相关的Person传回并存储在主席数组中。

进行第二次提取毫无意义,导致名称重复问题。