2016-07-03 7 views
3

私は数日間、作業中のCore Dataの関係を確立するために取り組んできました。私は少し進歩を遂げましたが、実質的なものは何もありませんでしたので、私はこれに取り組み、私を助けてくれる人よりもはるかに賢い人を願っています。Swift - Core Data Relationship - アルバムのスタイル

少しの文脈の中で、私は本質的に写真アルバムアプリを作成しています。アルバムの中には写真があり、各写真にはキャプションが付いています。私は、属性 "savedTitle"、 "savedText"、 "savedImage"を持つエンティティ "ScannedItem"を構成しました。

savedTitle =画像のタイトル。

savedText =画像のキャプション。

savedImage =画像そのもの。

"ScannedItem"(以前の属性を保持するエンティティ)を "Album"エンティティに追加する方法についてはわかりません。

詳細については、「ScannedItem」とその属性はすべて1つのアルバムにしかないので、これは「To-One」の関係になると思います。

私はここに自分のエンティティと関係をどのように構築したかのイメージを含めました。以下はScanned Item Entity

Album Entity

"スキャンアイテムのエンティティを" 保存するための私のコードです。

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context: NSManagedObjectContext = appDel.managedObjectContext 

    let saveData = NSEntityDescription.insertNewObjectForEntityForName("ScannedItem", inManagedObjectContext: context) 

    let imageRep = UIImagePNGRepresentation(image)! 


    saveData.setValue(textTitle, forKey: "savedTitle") 
    saveData.setValue(scannedText, forKey: "savedText") 
    saveData.setValue(imageRep, forKey: "savedImage") 


    do{ 
     try context.save() 
    }catch{ 
     print("Failed") 
    } 

ScannedItemをアルバムに保存するにはどうすればよいですか?私は数日間コードに苦労していて、それは私を狂ってしまうものでした。どんな助けでも大歓迎です。専門家に相談しましょう。

do{ 



     let request = NSFetchRequest(entityName: "ScannedItem") 
     let results = try context.executeFetchRequest(request) 


     let saveAlbum = NSEntityDescription.insertNewObjectForEntityForName("Album", inManagedObjectContext: context) 

     saveAlbum.setValue(results, forKey: "album") 


     let albumRequest = NSFetchRequest(entityName: "Album") 
     let albumResults = try context.executeFetchRequest(albumRequest) 

     if albumResults.count > 0{ 

     for item in albumResults as! [NSManagedObject]{ 

      let albumPrint = item.valueForKey("album") 

      print("Album Test: " + (albumPrint! as! String)) 


     } 
    } 

     if results.count > 0{ 


      for item in results as! [NSManagedObject]{ 

       let titleSaved = item.valueForKey("savedTitle") 
       let textSaved = item.valueForKey("savedText") 
       //let imageSaved = item.valueForKey("savedImage") 
       //let titleSaved = item.valueForKey("savedTitle") 

       print("Title" + (titleSaved! as! String)) 
       print("Text" + (textSaved! as! String)) 
       //print(imageSaved!) 



      } 


     } 


    }catch{ 
     print("Failed") 
    } 

UPDATEは、今私は私が持っている、私が何をするかわかりません。アルバム 『「実体がアルバムは、キー値コーディング準拠のキーのためではありません』というエラーを受信して​​います時間のためにそれをいじるされて。

答えて

1

Albumで、あなたはアルバムに多くのアイテムを持つことができるので、scanItemsscanItemを変更してまで、多くのそれを作る。

albumRelationshipalbumに変更し、to-oneに設定します。

あなたはあなたが追加したいアルバムを知っているか、またはフェッチする必要があり、その後、ちょうど設定:

saveData.setValue(album, forKey: "album") 

コア・データは、自動的にあなたのための関係のもう一方の端を設定します。

+0

私はあなたの指示をすべて守り、私の質問を更新しました。ご協力ありがとうございました。私はこれを忘れている。 –

+0

アルバムはアルバムとの関係はなく、アルバムです。アルバムには一連のアイテムがあります。各項目にはアルバムがあります。これは双方向関係の性質です。管理対象オブジェクトのサブクラスを生成して、それらのプロパティ(mogenerator)を表示できるようにする必要があります。 – Wain

関連する問題