Начиная с версии 2.6, другой способ сделать это - сравнить поле с пустым массивом:
ME.find({pictures: {$gt: []}})
Тестирование его в оболочке:
> db.ME.insert([
{pictures: [1,2,3]},
{pictures: []},
{pictures: ['']},
{pictures: [0]},
{pictures: 1},
{foobar: 1}
])
> db.ME.find({pictures: {$gt: []}})
{ "_id": ObjectId("54d4d9ff96340090b6c1c4a7"), "pictures": [ 1, 2, 3 ] }
{ "_id": ObjectId("54d4d9ff96340090b6c1c4a9"), "pictures": [ "" ] }
{ "_id": ObjectId("54d4d9ff96340090b6c1c4aa"), "pictures": [ 0 ] }
Так он правильно включает документы, где pictures
имеет хотя бы один элемент массива, и исключает документы, где pictures
является либо пустым массивом, а не массивом, либо отсутствует.
Это метод экземпляра description
, объявленный как:
- (NSString *)description
Вот пример реализации (благодаря grahamparks):
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
Добавьте это в @implementation
вашего класса фотографий:
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
Вы можете переопределить метод описания NSObject:
- (NSString *)description
Что касается ведения журнала, я рекомендую эту запись в блоге для лучшего входа в Objective-C.