2016-08-21 99 views
0

即時通訊應用程序,其中顯示plist的隨機引號,並且可以將其保存爲收藏夾(核心數據),我想檢查我的隨機生成的報價是否已經存在於核心數據中或者不存在,我只是想改變保存按鈕,如果其已保存核心數據檢查是否已經保存,Swift

Quote.swift:

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:

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(意思是保存,不分別保存)