如何修复此代码以便仅获取更新的记录?

时间:2013-05-01 12:34:21

标签: ios web-services

我有一个使用Ray Wenderlich SDSyncEngine& amp; SDAFParseAPIClient,但我修改它以使用我的客户端的Web服务。创建获取请求时,它使用一个字符串附加到指定仅在updatedAt date之后下载记录的GET。我在这里记录:

-[SDAFParseAPIClient GETRequestForAllRecordsOfClass:updatedAfterDate:] [Line 69] jsonString = {"updatedAt":{"$gte":{"__type":"Date","iso":"1900-01-01T00:00:00.999Z"}}}

-[SDAFParseAPIClient GETRequestForClass:parameters:] [Line 54] request <NSMutableURLRequest http://myserver.com/api_address_which_returns_XML_JSON?where=%7B%22updatedAt%22%3A%7B%22%24gte%22%3A%7B%22__type%22%3A%22Date%22%2C%22iso%22%3A%221900-01-01T00%3A00%3A00.999Z%22%7D%7D%7D>

该字符串由此方法生成:

- (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]];
        NSLog(@"jsonString = %@", jsonString);
        paramters = [NSDictionary dictionaryWithObject:jsonString forKey:@"where"];
    }

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

最初来自教程。我的webservice不在字典中使用iso格式的日期。所以我将代码更改为:

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

得到了这个:

jsonString = {"updatedAt":1900-01-01T00:00:00.999Z}

但由于某些原因它无法正常工作,我每次都会从网络服务中获取所有记录。

1 个答案:

答案 0 :(得分:0)

我认为您在Web服务器上发布的请求可能有误。请打印请求字符串,然后再次检查。 您发送的请求具有空间,这是将updatedAt:string转换为utf8encode然后再次检查的原因。 它可能会对你有帮助。