2013-05-01 41 views
0

我有一个使用Ray Wenderlich SDSyncEngine & SDAFParseAPIClient的应用程序,但我修改了它以使用我的客户端的Web服务。创建提取请求时,它使用一个字符串追加到指定的GET,以便仅在updatedAt日期之后下载记录。我在这里记录它:如何修复此代码,以便仅提取更新的记录?

-[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} 

但由于某种原因它不工作,即时通讯仍然得到来自Web服务中的所有记录每次。

回答

0

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

+0

这是请求:'request marciokoko 2013-05-01 13:03:49

+0

其中%= 7B%22更新了%22%3A1900-01-01T00%3A00%3A00.999Z%7D在更新之前丢失了它应该是 而其中%= 7B%22&updatedAt%22%3A1900- 01-01T00%3A00%3A00.999Z%7D – 2013-05-01 13:08:41

+0

我在&jsonString格式行插入了一个&,但得到了:request ' – marciokoko 2013-05-01 13:16:46

相关问题