Я делаю RSS-ридер и хочу, чтобы элементы фидов можно было пометить как прочитанные. Я использую CoreData для своего проекта.
Моя модель:
RSSItemsTableViewController:
class RSSItemsTableViewController: UITableViewController {
@IBOutlet weak var feedNavigationItem: UINavigationItem!
var linkRSS: String = ""
var feeds: [RSSFeedCoreData] = []
var coreData = CoreDataModel()
override func viewDidLoad() {
super.viewDidLoad()
feeds = coreData.getDataRSSFeeds(selectRSS: selectedRSS!).sorted(by: {($0.timeCreate?.timeIntervalSince1970)! > $1.timeCreate!.timeIntervalSince1970}
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return feeds.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "feedCell", for: indexPath) as! ItemFeedTableViewCell
cell.feedTitle.text = feeds[indexPath.row].title
cell.timeLabel.text = feeds[indexPath.row].timeCreate?.timeIntervalSinceNow.stringFromTimeInterval()
cell.siteUrl.text = feeds[indexPath.row].siteUrl
if let url = feeds[indexPath.row].imageUrl {
cell.imageFeed.loadImage(from: url)
} else {
cell.widthImage.constant = 0
cell.widthFromImage.constant = 0
cell.widthFromImageSite.constant = 0
}
return cell
}
}
}
И Код модели CoreData:
class CoreDataModel {
var fetchRequest: NSFetchRequest<RSSFeedCoreData>?
func getDataRSSFeeds(selectRSS: RSSCoreData) -> [RSSFeedCoreData] {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
var RSSdataFeed: [RSSFeedCoreData] = []
do {
let RSSdata: [RSSCoreData] = try context.fetch(RSSCoreData.fetchRequest())
RSSdataFeed = RSSdata[RSSdata.index(of: selectRSS)!].feeds?.allObjects as! [RSSFeedCoreData]
}
catch {
RSSdataFeed = []
}
return RSSdataFeed
}
}
}
Я хочу добавить кнопку в RSSItemsTableViewController, чтобы загруженные элементы RSS читались как прочитанные (элемент чтения в CoreData должен быть обновлен для истинного значения для всех элементов канала). Как это можно сделать с помощью CoreData?