Какая модель данных лучше всего подходит для хранения инстаграм как данных? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть приложение, похожее на Instagram, в нем я должен получать сообщения и пользователей, чтобы идти с ними.Теперь я подошел к тому моменту, когда мне нужно выбрать между двумя DM для хранения сообщений. Ниже приведены два варианта:

опция 1 : каждый пост имеет пользователя, который сохраняетсделал это, но пользовательский объект является только пользовательским объектом, а это значит, что он может быть неэффективным, так как мне придется продолжать сохранять те же данные в пользовательском объекте

class Post: NSObject {

    var images = Image()
    let user = User()
    var snapshot : [String : AnyObject]?

}

опция 2 : Здесьобъект post не будет отслеживать пользователя, поскольку объект user отслеживает каждое сообщение

  class User: NSObject {

    var posts = [Post]()
    //Other data...

}

Поэтому мой вопрос: , какой DM лучше всего подходит для моего случая использования (то естьизвлекать и отображать сообщения в формате, аналогичном Instagram)

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

@ Galo Torres Sevilla комментарий - лучший ответ, поэтому я добавлю его как правильный ответ:

Первый вариант лучше.Каждый пост должен всегда содержать ссылку на того, кто его опубликовал.С другой стороны, пользователям не нужно иметь ссылку на каждый из своих постов.Представьте себе ситуацию, когда вы хотите отображать только имя пользователя и фотографию профиля. Зачем вам выбирать все сообщения в этом случае?Кроме того, модель в вашем случае не должна содержать переменных, которые указывают на ссылочные типы, такие как изображения, лучше хранить их в типах значений, таких как String, которая указывает на URL-адрес изображения, и загружать изображение по мере необходимости.

- Galo Torres Sevilla

0 голосов
/ 01 марта 2019

вы должны использовать

class Post {

    var images: [String]
    let userId: String
    var snapshot : [String : AnyObject]?

}

class User {
    let id: String
}

при получении сообщений, вы можете сделать что-то вроде этого.repo.findPostsByUserId(userId, page, size)

...