Подсчитайте строки в классе и выберите строку для заданного числа

Я делаю приложение для iOS с помощью Parse.com и хотел узнать, есть ли способ получить общее количество строк в классе? Например, у меня есть класс «СООБЩЕНИЕ» со 100 объектами, есть ли способ получить это целое число, например:

int x = [количество сообщений]; //теперь х = 100;

И как только у меня будет 100 в моей переменной x, я получу случайное число от 1 до 100, скажем, функция возвращает 7, есть ли способ получить объект в строке номер 7?.


person iDec    schedule 25.02.2015    source источник


Ответы (1)


Вы можете получить счет следующим образом:

PFQuery *query = [PFQuery queryWithClassName:@"MESSAGE"];
[query countObjectsInBackgroundWithBlock:^(int count, NSError *error) {
  // count tells you how many objects matched the query
}];

Вы можете получить 7-й объект следующим образом:

PFQuery *query = [PFQuery queryWithClassName:@"MESSAGE"];
// Skip the first 6, retrieve the next 1
query.skip = 6;
query.limit = 1;
[query findObjectsInBackgroundWithBlock:^(NSArray *messages, NSError *error) {
  // Now you have the 7th MESSAGE at messages[0]
}];

Собрав их вместе, вы можете сделать:

PFQuery *query = [PFQuery queryWithClassName:@"MESSAGE"];
[query countObjectsInBackgroundWithBlock:^(int count, NSError *error) {
  // Skip the first <random>, retrieve the next 1
  query.skip = arc4random_uniform(count);
  query.limit = 1;
  [query findObjectsInBackgroundWithBlock:^(NSArray *messages, NSError *error) {
    // Now you have a random MESSAGE at messages[0]
  }];
}];
person Ian MacDonald    schedule 25.02.2015
comment
Ничего себе, это было быстро и легко понять. Кажется довольно хорошей идеей, позвольте мне попробовать, и я дам вам знать, большое спасибо, Ян!! - person iDec; 25.02.2015
comment
Отличный ответ. Можно также сделать getFirstObjectInBackgroundWithBlock вместо .limit = 1. - person danh; 26.02.2015