防止重复核心数据 swift
Prevent for duplicates Core data swift
我想避免核心数据重复 swift。我觉得应该在应用程序内委托完成,但我不确定必须更改什么。
这是我添加新项目时的代码:
@IBAction func buttonClicked(_ sender: UIBarButtonItem) {
let fetchRequest: NSFetchRequest<Bookmarks> = Bookmarks.fetchRequest()
let bookmark = Bookmarks(context: context)
if bookmarkButton.image == UIImage(systemName: "bookmark") {
bookmarkButton.image = UIImage(systemName: "bookmark.fill")
bookmark.urlToImage = urlImage
bookmark.source = sourceName
bookmark.titleName = titleName
bookmark.urlLink = url
bookmarks.append(bookmark)
} else {
bookmarkButton.image = UIImage(systemName: "bookmark")
if fetchRequest.predicate == NSPredicate.init(format: "titleName == %@", titleName!){
print(bookmark)
do {
let objects = try context.fetch(fetchRequest)
for object in objects {
context.delete(object)
}
try context.save()
} catch _ {
// error handling
}
}
}
do {
try context.save()
} catch {
}
}
这是我的申请照片,有重复:
如果你知道如何解决这个问题,请帮助我
提前致谢
在插入新项目之前检查是否已经存在具有相同 titleName
的项目。如果不插入新项目。
像这样
@IBAction func buttonClicked(_ sender: UIBarButtonItem) {
let fetchRequest: NSFetchRequest<Bookmarks> = Bookmarks.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "titleName == %@", titleName!)
if (try? context.fetch(fetchRequest))?.first != nil {
bookmarkButton.image = UIImage(systemName: "bookmark.fill")
} else {
let bookmark = Bookmarks(context: context)
bookmarkButton.image = UIImage(systemName: "bookmark")
bookmark.urlToImage = urlImage
bookmark.source = sourceName
bookmark.titleName = titleName
bookmark.urlLink = url
bookmarks.append(bookmark)
do {
try context.save()
} catch {
print(error)
}
}
}
如果商品无法通过标题唯一标识,请为谓词添加更多条件。
我想避免核心数据重复 swift。我觉得应该在应用程序内委托完成,但我不确定必须更改什么。
这是我添加新项目时的代码:
@IBAction func buttonClicked(_ sender: UIBarButtonItem) {
let fetchRequest: NSFetchRequest<Bookmarks> = Bookmarks.fetchRequest()
let bookmark = Bookmarks(context: context)
if bookmarkButton.image == UIImage(systemName: "bookmark") {
bookmarkButton.image = UIImage(systemName: "bookmark.fill")
bookmark.urlToImage = urlImage
bookmark.source = sourceName
bookmark.titleName = titleName
bookmark.urlLink = url
bookmarks.append(bookmark)
} else {
bookmarkButton.image = UIImage(systemName: "bookmark")
if fetchRequest.predicate == NSPredicate.init(format: "titleName == %@", titleName!){
print(bookmark)
do {
let objects = try context.fetch(fetchRequest)
for object in objects {
context.delete(object)
}
try context.save()
} catch _ {
// error handling
}
}
}
do {
try context.save()
} catch {
}
}
这是我的申请照片,有重复:
如果你知道如何解决这个问题,请帮助我 提前致谢
在插入新项目之前检查是否已经存在具有相同 titleName
的项目。如果不插入新项目。
像这样
@IBAction func buttonClicked(_ sender: UIBarButtonItem) {
let fetchRequest: NSFetchRequest<Bookmarks> = Bookmarks.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "titleName == %@", titleName!)
if (try? context.fetch(fetchRequest))?.first != nil {
bookmarkButton.image = UIImage(systemName: "bookmark.fill")
} else {
let bookmark = Bookmarks(context: context)
bookmarkButton.image = UIImage(systemName: "bookmark")
bookmark.urlToImage = urlImage
bookmark.source = sourceName
bookmark.titleName = titleName
bookmark.urlLink = url
bookmarks.append(bookmark)
do {
try context.save()
} catch {
print(error)
}
}
}
如果商品无法通过标题唯一标识,请为谓词添加更多条件。