2017-10-13 15 views
0

私のアプリケーションにコアデータを開発しています。 コアデータからname属性を取得したいとします。コアデータから特定の属性を取得するswift

クラスのViewController:のUIViewController {

@IBOutlet weak var saveDataBtn:UIButton! 
@IBOutlet weak var dataTxtField:UITextField! 
@IBOutlet weak var dataLbl:UILabel! 
var tasks: [Task] = [] 
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

@IBAction func saveDataBtnPressed(_sender : UIButton){ 
    print("Save Data.") 
    let task = Task(context: context) 
    task.name = dataTxtField.text 
    (UIApplication.shared.delegate as! AppDelegate).saveContext() 
    getData() 
} 

func getData(){ 
    do{ 
     tasks = try context.fetch(Task.fetchRequest()) 

    }catch{ 
     print("Fetching Failed") 

    } 

} 

I am attaching my xcdatamodel

どのように私はそれを得ることができますか?

ありがとう、

+0

興味のあるタスクオブジェクトを取得し、その「名前」プロパティを読み取ってください。 –

+0

私はすでにタスクオブジェクトを取得しています。しかし、私は名前のプロパティを読み取ることができません – user12346

+0

あなたはどのように私はタスクオブジェクトから名前のプロパティを得ることができることを教えてくださいできます – user12346

答えて

1

スウィフト4では、このプロパティに直接アクセスできます。エンティティのインスタンスを削除して更新する方法 -を更新し

do { 
    let tasks = try context.fetch(request) 
    for task in tasks { 
     print(task.name) 
    } 
} catch let error { 
    print(error.localizedDescription) 
} 

ここでは、更新と削除を処理するためのコードを整理するためのアイディアをいくつか紹介します。

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

extension Task { 
    // to get an instance with specific name 
    class func instance(with name: String) -> Task? { 
     let request = Task.fetchRequest() 

     // create an NSPredicate to get the instance you want to make change 
     let predicate = NSPredicate(format: "name = %@", name) 
     request.predicate = predicate 

     do { 
      let tasks = try context.fetch(request) 
      return tasks.first 
     } catch let error { 
      print(error.localizedDescription) 
      return nil 
     } 
    } 

    // to update an instance with specific name 
    func updateName(with name: String) { 
     self.name = name 
     (UIApplication.shared.delegate as! AppDelegate).saveContext() 
    } 

    // to delete an instance 
    func delete() { 
     context.delete(self) 
     (UIApplication.shared.delegate as! AppDelegate).saveContext() 
    } 
} 

func howItWorks() { 
    guard let task = Task.instance(with: "a task's name") else { return } 
    task.updateName(with: "the new name") 
    task.delete() 
} 
+0

ありがとうございます!それは働いた:) – user12346

+0

あなたはswift 4の特定の行を更新して削除することを考えていますか? – user12346

+0

私は答えを更新しました。しかし、私はまだこれを読むことをお勧めします、https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/index.html。 – mrfour

関連する問題