Ios 在视图之间传递属性或托管对象ID-核心数据
Ios 在视图之间传递属性或托管对象ID-核心数据,ios,core-data,swift,nsmanagedobject,Ios,Core Data,Swift,Nsmanagedobject,在此处输入代码使用Swift和Xcode 6 View One.swift=TableView View Two.swift=查看w/TextFields(和其他UI元素),这些字段根据TableView中选择的项目而变化 我已经编写了代码,将在TableView中选择的托管对象ID传递给View Two(作为委托属性)但这是最好的方法吗 //main view class var mainAry = [String]() // for TableView var obj
在此处输入代码
使用Swift和Xcode 6
View One.swift=TableView
View Two.swift=查看w/TextFields(和其他UI元素),这些字段根据TableView中选择的项目而变化
我已经编写了代码,将在TableView中选择的托管对象ID传递给View Two(作为委托属性)但这是最好的方法吗
//main view class
var mainAry = [String]() // for TableView
var objectsAry = [NSManagedObject]()
var itemObChosen: NSManagedObject? = nil //protocol property
//loads the table view and objectsAry
func loadMyItems() {
objectsAry.removeAll()
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let contextOb: NSManagedObjectContext = appDel.managedObjectContext!
let cdFetch = NSFetchRequest(entityName: "Items")
var getData = contextOb.executeFetchRequest(cdFetch, error: nil)!
if(getData.count > 0) {
for eachItem in getData {
var itemItem = eachItem.valueForKey("itemname") as String!
if (itemItem != nil) {
objectsAry.append(eachItem as NSManagedObject)
}
}
}
}
//within didSelectRowAtIndexPath
itemClkdVar = indexPath.row
itemObChosen = objectsAry[itemClkdVar] //passed to the other view as chosen object
//fixed to eliminate mainAry
maincell.textLabel?.text = self.objectsAry[indexPath.row].valueForKey("itemname") as? String
为什么不直接传递托管对象而不是它的idI呢?我试过了,并且出现了错误,但是现在,在Xcode的帮助下,我让它工作了。我不清楚核心数据的内存方面。似乎我必须将一个实体的所有对象都提取到一个var中,然后循环它们以进行匹配。W SQL,除非您需要,否则不会加载它。否,您可以在执行fetch REQUESTEYES之前指定查询参数。例如,我将深入研究谓词信息。我无法立即找到任何可能给我一个特定对象的谓词,但它可能在那里。除非有方法提取单击的对象(DidSelectRowatineXpath),否则在这一点上似乎可以正常工作。