我在azure pulltoquery方法中使用同步表的日期属性谓词进行同步。要求仅在过去2天内获得物品。
NSDate *now = [NSDate date];
NSDate *twoDaysAgo = [now dateByAddingTimeInterval:-2*24*60*60];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSString *toString = [dateFormatter stringFromDate:twoDaysAgo];
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"(updatedAt>= %@)",toString];
但我从azure服务中得到错误找到操作数类型'Edm.DateTimeOffset'和'Edm.String'用于运算符类型'GreaterThanOrEqual'。
这里是microsoft提供的示例代码。在提供的链接中查找以下方法。
- (无效)pullData:(QSCompletionBlock)完成
答案 0 :(得分:0)
您的日期格式设置似乎有问题。尝试使用像Fiddler或Postman这样的REST客户端发送查询,并根据客户端上的查询进行检查。
请注意,此更新的查询与增量同步不兼容。因此,您需要为查询键传递nil(第一个参数为pullData)。
答案 1 :(得分:0)
您应该使用NSDate作为NSPredicate的参数(如果数据是DateTimeOffset,则使用MSDateOffset):
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(updatedAt>= %@)", twoDaysAgo];
Azure Mobile SDK中的谓词解析器将使用参数数据类型来创建正确的查询字符串。
如果您的数据类型是DateTimeOffset类型:
MSDateOffset *offset = [MSDateOffset date:twoDaysAgo];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(updatedAt>= %@)", offset];