gpt4 book ai didi

swift - 核心数据检查是否已经保存,Swift

转载 作者:行者123 更新时间:2023-11-28 16:16:09 25 4
gpt4 key购买 nike

我正在构建应用程序,其中显示来自 plist 的随机引用,您可以将其保存到收藏夹(核心数据),我想检查我的随机生成的引用是否已经存在于核心数据中,我只想更改保存按钮,如果它已经保存

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)
}

}
}

这是我的最爱VC:

 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)
}
}

最佳答案

不清楚您是如何生成这个新报价的。在调用 insertIntoManagedObjectContext 之前,您至少需要使用获取请求来检查引用是否存在。一旦报价存在并且您正在配置 View (使用报价文本和保存按钮),您就可以这样做。

您的提取请求使用一个简单的谓词来检查具有匹配的 quote 文本的报价。

您已经有一个列出所有引号的提取请求,因此您需要添加到其中以进行检查的是格式为 "quote = %@" 的谓词并检查引号的计数结果(应始终为 0 或 1(分别表示保存和不保存)。

关于swift - 核心数据检查是否已经保存,Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com