Ваша переменная ids
будет построена из «строк», а не ObjectId
значений.
Мангустировать «autocasts» строковые значения для ObjectId
в их правильный тип в регулярных запросах, но это не происходит в конвейере агрегации , как описано в номере № 1399.
Вместо этого вы должны выполнить правильное литье, чтобы ввести вручную:
ids = ids.map(function(el) { return mongoose.Types.ObjectId(el) })
Затем вы можете использовать их в своем конвейере:
{ "$match": { "_id": { "$in": ids } } }
Причина в том, что конвейеры агрегации «обычно» изменяют структуру документа, и поэтому mongoose не делает никаких предположений о том, что «схема» применяется к документу на любой стадии конвейера.
Можно утверждать, что этап «первого» конвейера, когда это этап $match
, должен сделать это, поскольку документ действительно не изменяется. Но сейчас это не так.
Любые значения, которые могут быть «строками» или, по крайней мере, не корректным типом BSON, должны быть вручную отобраны для соответствия.
Я думаю, что automaticallyAdjustsScrollViewInsets
работает только тогда, когда ваши контроллеры view
- это UIScrollView
(табличное представление - одно).
Похоже, у вас проблема в том, что view
вашего контроллера является обычным UIView
, а ваш UITableView
- просто подпредставлением, поэтому вам придется либо:
Сделайте просмотр таблицы «корневым».
Настроить вставки вручную:
UIEdgeInsets insets = UIEdgeInsetsMake(controller.topLayoutGuide.length,
0.0,
controller.bottomLayoutGuide.length,
0.0);
scrollView.contentInset = insets;
Редактировать:
Похоже, SDK способен регулировать некоторые виды прокрутки несмотря на то, что он не является корневым представлением контроллера.
Пока что он работает с UIScrollView
и UIWebView
scrollView
, когда они являются подпредставлением по индексу 0
.
В любом случае, это может измениться в будущих выпусках iOS, так что вы более безопасно настраиваете вставки сами.
Ваш контроллер представления должен находиться непосредственно в стеке UINavigaitonController, чтобы automaticallyAdjustsScrollViewInsets
работал (т. Е. Не дочерний контроллер представления)
Если это дочерний контроллер представления другого контроллера представления, который находится в стеке навигации вместо этого вы можете установить automaticallyAdjustsScrollViewInsets = NO
для родителя. В качестве альтернативы вы можете сделать это:
self.parentViewController.automaticallyAdjustsScrollViewInsets = NO;
Я знаю, что этот пост немного стар, но я только что решил эту проблему с iOS 11 и swift 4, моя текущая проблема заключалась в том, что у iOS11 есть новое свойство для проверки вставок, когда ScrollView действительно существует, это contentInsetAdjustmentBehavior
, который является свойством ScrollView, а свойство по умолчанию - automatic
, поэтому мой код был:
if #available(iOS 11, *) {
myScroll.contentInsetAdjustmentBehavior = .never
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
Надеюсь, это тоже решит ваши проблемы ...
У меня была та же проблема - табличное представление с нежелательным заполнением верхней части.
Во всех ответах говорится, что нужно исправить, установив automaticallyAdjustsScrollViewInsets = NO
, но это не устранило отступы для меня.
Подобно другим ответам, приведенным здесь, эти направления необходимо немного изменить, если вы используете нестандартную иерархию представлений.
У меня был UIViewController со встроенным UITableViewController. Не удалось установить automaticallyAdjustsScrollViewInsets
на контроллере табличного представления.
Вместо этого я установил automaticallyAdjustsScrollViewInsets = NO
на родительском UIViewController, который встраивал мой контроллер табличного представления. Это успешно устранило отступы в представлении таблицы.
self.textView.contentInset = UIEdgeInsetsMake(1.0,0.0,0,0.0);
[self setEdgesForExtendedLayout:UIRectEdgeNone];
У меня есть эта иерархия:
пользовательский навигационный контроллер содержит пользовательский tabbarcontroller
пользовательский tabbarcontroller содержит несколько контроллеров
эти контроллеры содержат подпредставления, а один из них содержит подкласс uiscrollview.
Мне пришлось автоматически установить для ADjustsScrollViewInsets значение NO
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.automaticallyAdjustsScrollViewInsets = NO;
в пользовательском tabbarcontroller . Другие контроллеры в иерархии не влияют на поведение вложенной прокрутки.