Как мне обработать выборку объектов для социальной шкалы времени с основными данными?
Прямо сейчас каждый объект Post, возвращаемый из сетевого запроса, сохраняется в основных данных.Таким образом, когда загружается профиль случайного пользователя, его сообщения сохраняются, что означает, что они появляются на временной шкале текущего пользователя (даже если за ним не следует текущий пользователь).
В моей временной шкале NSFetchedResultsController извлекает все сохраненные сообщения, в том числе созданные пользователями, за которыми не следует текущий пользователь.
Должен ли я сохранять только сообщения, принадлежащие временной шкале, для основных данных?
Или есть способ сохранить список основных объектов данных на временной шкале в другом месте?
Вот мои текущие настройки:
@objc(Post)
public class Post: NSManagedObject {
static func findOrCreatePost(id: String, data: [String:Any], in context: NSManagedObjectContext) -> Post {
let request: NSFetchRequest<Post> = Post.fetchRequest()
if let id = data["_id"] as? String {
request.predicate = NSPredicate(format: "id = %@", id)
}
do {
let matches = try context.fetch(request)
if matches.count > 0 {
return matches[0]
}
} catch {
let error = error
print(error.localizedDescription)
}
let post = Post(context: context)
post.id = id
status.text = data["text"] as? String
...
PersistenceService.saveContext()
return post
}
class PersistenceService {
static var context: NSManagedObjectContext {
return persistentContainer.viewContext
}
static var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "AppName")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
static func saveContext () {
let context = persistentContainer.viewContext
context.perform {
context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
}
}