我想將數據存儲到兩個viewControllers
中的兩個CoreData實體中。如何在Swift中使用來自不同viewController的多個CoreData實體
我可以做到這一點,但從單一的viewController
。通過使用下面的代碼。
import UIKit
import CoreData
class ViewController: UIViewController {
override func viewDidLoad()
{
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let phoneContactRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "PhoneContacts")
phoneContactRequest.returnsObjectsAsFaults = false
let emailContactRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "EmailContacts")
emailContactRequest.returnsObjectsAsFaults = false
/*
// Save to database
//object one
let phoneContactsObject = NSEntityDescription.insertNewObject(forEntityName: "PhoneContacts", into: context)
phoneContactsObject.setValue("John", forKey: "name")
phoneContactsObject.setValue("8335636532", forKey: "number")
//object two
let emailContactObject = NSEntityDescription.insertNewObject(forEntityName: "EmailContacts", into: context)
emailContactObject.setValue("[email protected]", forKey: "email")
emailContactObject.setValue("Peter", forKey: "emailname")
*/
do{
// Fetch from PhoneContacts entity
let phoneContactResults = try context.fetch(phoneContactRequest)
if phoneContactResults.count > 0
{
for phoneContactResult in phoneContactResults as! [NSManagedObject]
{
if let phoneContactName = phoneContactResult.value(forKey: "name")
{
print(phoneContactName)
}
if let phoneContactNumber = phoneContactResult.value(forKey: "number")
{
print(phoneContactNumber)
}
}
}
// Fetch from EmailContacts entity
let emailContactResults = try context.fetch(emailContactRequest)
if emailContactResults.count > 0
{
for emailContactResult in emailContactResults as! [NSManagedObject]
{
if let emailContactName = emailContactResult.value(forKey: "emailname")
{
print(emailContactName)
}
if let emailContactEmail = emailContactResult.value(forKey: "email")
{
print(emailContactEmail)
}
}
}
}
catch
{
}
}
}
正如你可以在上面的代碼中看到的,我有兩個CoreData實體PhoneContacts
和EmailContacts
。我可以從一個viewController
將數據存儲到兩個實體中。有用。
現在,我想的是,如何從viewController
2存儲從viewController
1和實體2(EmailContacts
)數據轉換爲使用實體(PhoneContacts
)?
我應該將managedObjectContext
分享給第二個viewController嗎?或者接受任何其他更好的解決方案。
我使用Xcode 8.2,Swift 3.0
在此先感謝。
如果你想分享你的MOC?您可以使用賽段 – Mannopson
'MVC'模式提倡者避免創建獨立的模型界面。你應該在ViewControllers內部不要有核心數據代碼,raki提出了一個很好的方法。 – ystack