Инициализировать UIDatePicker.
var birthPicker = UIDatePicker()
// добавить цель на BirthPicker для получения даты.
override func viewDidLoad() {
super.viewDidLoad()
self.birthPicker.datePickerMode = UIDatePickerMode.date
self.birthPicker.addTarget(self, action: #selector(handleDatePicker), for: UIControlEvents.valueChanged)
}
// Получить дату из UIDatePicker при прокрутке.
@objc func handleDatePicker(sender: UIDatePicker) {
let timeFormatter = DateFormatter()
timeFormatter.dateStyle = .long
birthDateField.text = timeFormatter.string(from: sender.date)
}
Эта тема рассматривается в разговоре Google io: http://code.google.com/events/io/sessions/BuildingScalableComplexApps.html
В основном команда Google предлагает использовать свойства списка и то, что они называют объектами реляционного индекса, пример приложения можно найти здесь: http://pubsub-test.appspot.com/
"Загрузите пользователя, цикл через список друзей и загрузите их последние сообщения в блоге".
Это - весь, соединение - вложенные циклы. Некоторые виды соединений являются циклами с поисками. Большинство поисков является просто циклами; некоторые - хеши.
"Наконец объедините все сообщения в блоге для нахождения последних 10 записей в блоге"
Это - ORDER BY с ПРЕДЕЛОМ. Это - то, что база данных делает для Вас.
Я не уверен, что не масштабируемо об этом; это - то, что база данных делает так или иначе.
Если Вы посмотрите на то, как решение SQL, которое Вы предоставили, будет выполняться, оно пойдет в основном как это:
Можно выполнить точно ту же процедуру сами в Механизме Приложения, при помощи экземпляров Запроса как итераторы и выполнение слияния по ним.
Вы правы, что это не масштабируется хорошо к большим количествам друзей, но это страдает от точно тех же проблем, которые имеет реализация SQL, это просто не маскирует их также: Выборка последних 20 (например), затраты на записи примерно O (n регистрируют n), работа, где n является числом друзей.
Вот пример на python, взятый из http://pubsub-test.appspot.com/ :
У кого-нибудь есть такой для java? Спасибо.
from google.appengine.ext import webapp
from google.appengine.ext import db
class Message(db.Model):
body = db.TextProperty(required=True)
sender = db.StringProperty(required=True)
receiver_id = db.ListProperty(int)
class SlimMessage(db.Model):
body = db.TextProperty(required=True)
sender = db.StringProperty(required=True)
class MessageIndex(db.Model):
receiver_id = db.ListProperty(int)
class MainHandler(webapp.RequestHandler):
def get(self):
receiver_id = int(self.request.get('receiver_id', '1'))
key_only = self.request.get('key_only').lower() == 'on'
if receiver_id:
if key_only:
keys = db.GqlQuery(
'SELECT __key__ FROM MessageIndex WHERE receiver_id = :1',
receiver_id).fetch(10)
messages.extend(db.get([k.parent() for k in keys]))
else:
messages.extend(Message.gql('WHERE receiver_id = :1',
receiver_id).fetch(10))