2016-08-21 2 views
0

imist building app plistのランダムな見積もりが表示されていて、それをお気に入り(コアデータ)に保存することができます。コアデータが既に保存されているかどうかチェックします。

var quotesPlist: NSArray! = [] 

override func awakeFromNib() { 
    loadQuote() 
} 

func loadQuote(){ 
    let path = NSBundle.mainBundle().pathForResource("quotesList", ofType: "plist") 
    quotesPlist = NSArray(contentsOfFile: path!) 
    quoteLbl.text = quotesPlist[Int(randomNumber())] as? String 
} 

SavedQuoteプロパティ:

@NSManaged var quote: String? 
@NSManaged var creationDate: NSDate? 
@NSManaged var uuid: String? 

これはHomeVCです:そのはすでに

Quote.swiftを保存した場合、私はちょうどボタン変更を保存したい

func createQuoteFromNib() -> QuoteView! { 
    return NSBundle.mainBundle().loadNibNamed("QuoteView", owner: self, options: nil)[0] as? QuoteView 

} 

@IBAction func saveACTION(sender: UIBarButtonItem) { 

    if let label = currentQuote.quoteLbl.text where label != "" { 

     let app = UIApplication.sharedApplication().delegate as! AppDelegate 
     let context = app.managedObjectContext 
     let entity = NSEntityDescription.entityForName("SavedQuotes", inManagedObjectContext: context)! 
     let quote = SavedQuotes(entity: entity, insertIntoManagedObjectContext: context) 

     quote.quote = currentQuote.quoteLbl.text 
     quote.creationDate = NSDate() 
     quote.uuid = NSUUID().UUIDString 
     context.insertObject(quote) 


     do { 
      try context.save() 
     } catch let err as NSError { 
      print(err.debugDescription) 
     } 

    } 
} 

これは私のFavoritesVCです:

var quotesArray = [SavedQuotes]() 

@IBOutlet weak var tableView: UITableView! 

func fetchAndSetResults(){ 
    let app = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context = app.managedObjectContext 
    let fetchRequest = NSFetchRequest(entityName: "SavedQuotes") 
    let dateSort = NSSortDescriptor(key: "creationDate", ascending: false) 
    fetchRequest.sortDescriptors = [dateSort] 

    do { 
     let results = try context.executeFetchRequest(fetchRequest) 
     quotesArray = results as! [SavedQuotes] 
    } catch let err as NSError { 
     print(err.debugDescription) 
    } 
} 

答えて

1

あなたがこの新しい引用符を生成しているかは明らかではありません。 insertIntoManagedObjectContextに電話する前に、見積もりが存在するかどうかを確認するために、フェッチ要求を使用する必要があります。見積もりが存在し、見積もりテキストと保存ボタンを使用してビューを設定するとすぐに、これを行うことができます。

フェッチリクエストでは、簡単な述語を使用して、一致するquoteのテキストを確認します。

すべての見積もりを一覧表示するためのフェッチ要求が既にあるので、チェックのために追加する必要があるのは、形式が"quote = %@"の述語です(結果は常に0または1です。保存すると保存しないことを意味します)

関連する問題