CoreDataエンティティを2つに格納したいviewControllers
。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
{
}
}
}
あなたは上記のコードで見ることができるように、私は2つのCoreDataエンティティPhoneContacts
とEmailContacts
を持っています。単一のviewController
から両方のエンティティにデータを格納することができました。できます。
さて、私が欲しいものを、どのように私はviewController
2からviewController
1とentity2(EmailContacts
)からentity1(PhoneContacts
)にデータを保存することができますか?
managedObjectContext
を2番目のviewControllerに共有する必要がありますか。または、他のより良い解決策が受け入れられます。事前に私はXcodeの8.2を使用してい
、スウィフト3.0
感謝。
MOCを共有したい場合は、あなたは独立したモデルインターフェースを作成することを避けるために、セグの – Mannopson
'MVC'パターンの支持者を使って共有することができます。 ViewController内にCore Dataコードを持ってはいけません。rakiは良いアプローチを提案しています。 – ystack