2017-03-20 3 views
0

エンティティ "Person"にage(Int16)とname(string)という2つの属性を追加できるコアデータ内にリストを作成しようとしています。限り、私はそれが新しいものが追加されたとして新しいオブジェクトを格納していると私は私の配列が適切にそれらをフェッチしているとは思わないと信じていることを伝えることができます。誰かが私が間違っている場所を把握するのに役立つことができるか?あなたのforループでコアデータからフェッチして配列を配置する際に問題が発生する

var list = [Person(context:context)] 

@IBAction func saveButton(_ sender: Any) 
{ 
    list.append(Person(context:context)) 

    list[list.count-1].age = Int16(ageTF.text!)! 

    list[list.count-1].name = nameTF.text 

    let newList = NSEntityDescription.insertNewObject (forEntityName: "Person",into: context) as NSManagedObject 

    newList.setValue(list[list.count-1].name, forKey: "name") 
    newList.setValue(list[list.count-1].age, forKey: "age") 

    appDelegate.saveContext() 
} 

@IBAction func printList(_ sender: Any) 
{ 

    for index in 0...list.count-1 
    { 
     print("Name of person # \(index) = \(list[index].name!)") 
     print("Age of person # \(index) = \(list[index].age)") 
    } 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view, typically from a nib. 

    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") 

    do { 
     let results = try context.fetch(fetchRequest) 
     let listItems = results as! [NSManagedObject] 

     print(listItems) 
    } 
    catch { 
     print("Error") 

    } 
} 

答えて

0

範囲はそうあなたがコアデータに二回オブジェクトを挿入する機能NSEntityDescription.insertNewObject (forEntityName: "Person",into: context) as NSManagedObjectと同じである0..<list.count

+0

トラブルシューティング中に変更する前に、このようなループがありました。それをポストに戻しました。 – JL64

0

Person(context:context)を試してみてください0...0です。

関連する問題