Karian
Karian

Reputation: 31

Parse.com always returns a maximum of 100 records, same having "limit = 1000"

I have an iOS app that receives data from the PARSE.COM. How did not know nothing about 'parse.com' , I used the tutorial "http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1".

The synchronization occurs only from the server to the device (iOS), and one time the object is added to the device, it should not be inserted again.

Turns out I got 131 objects in a class and 145 in another, but the Parse.com always returns me the first 100 items, even those already are in the device (iOS).

The worst thing is that in my code I have a variable "limit" in "request" that should work, but does not work for me.

I need your help, please ...

Code:

- (NSMutableURLRequest *)GETRequestForAllRecordsOfClass:(NSString *)className updatedAfterDate:(NSDate *)updatedDate
{
    NSMutableURLRequest *request = nil;
    NSDictionary *paramters = nil;
    if (updatedDate) {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.'999Z'"];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

        NSString *jsonString = [NSString 
                                stringWithFormat:@"{\"updatedAt\":{\"$gte\":{\"__type\":\"Date\",\"iso\":\"%@\"}}}", 
                                [dateFormatter stringFromDate:updatedDate]];

        //That's line of 'paramters' is from original tutorial Raywenderlich
       // paramters = [NSDictionary dictionaryWithObject:jsonString forKey:@"where"];

        //This line was add for the autors of tutorial in a comment from your blog, and he say that has work, but not for me =(
        paramters = @{@"where" : jsonString, @"limit" : @(1000)};

    }
    request = [self GETRequestForClass:className parameters:paramters];
    return request;
}​

The print of variable "request" after this method is this:

URL: https://api.parse.com/1/classes/Substancia?where=%7B%22updatedAt%22%3A%7B%22%24gte%22%3A%7B%22__type%22%3A%22Date%22%2C%22iso%22%3A%222014-09-23T02%3A13%3A01.999Z%22%7D%7D%7D&limit=1000

Why do same having the variable "LIMIT = 1000", the parse.com every returns me 100 items? And even that returns 100 items, why do in the next time he does the "request" he it does not catch the next 100 since the other 100 registers earlier have already been entered?

Can anyone help me?

Upvotes: 3

Views: 1055

Answers (2)

Hyder
Hyder

Reputation: 1173

I'm not sure, but I think this is what you're looking for. A great solution on how to retrieve all the objects from Parse instead of the max limit i.e. 1000.

Upvotes: 0

GabbyL1003
GabbyL1003

Reputation: 96

(Answering here since I don't have enough reputation to comment.)

  • For the limit=1000 not seeming to work: perhaps the "where" clause (i.e. constraining to items with updatedAt value >= 2014-09-23T02:13:01.999Z) is limiting results to less than 1000?
  • (To Ian's point) There is a 'skip' parameter that tells the API how many items to skip ahead, for pagination. i.e. limit=100&skip=100 to see page 2.

Upvotes: 2

Related Questions