我有一个名为“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条目的引用时对设备的要求是什么。
答案 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
传回并存储在主席数组中。
进行第二次提取毫无意义,导致名称重复问题。