再会,
我正在尝试使用 iOS SDK 在 SimpleDB 上选择一个项目。问题是我知道如何做到这一点的唯一方法是使用 SimpleDBGetAttributesRequest 获取项目名称,然后检查日期属性并查看它是否与我请求的匹配。
这绝对是一种可怕的方法,因为我必须为此不断查询整个数据库。有没有一种简单的方法来检查属性而不是名称,或者选择日期的方法?
再会,
我正在尝试使用 iOS SDK 在 SimpleDB 上选择一个项目。问题是我知道如何做到这一点的唯一方法是使用 SimpleDBGetAttributesRequest 获取项目名称,然后检查日期属性并查看它是否与我请求的匹配。
这绝对是一种可怕的方法,因为我必须为此不断查询整个数据库。有没有一种简单的方法来检查属性而不是名称,或者选择日期的方法?
我不是 iOS SDK 专家,但听起来 SimpleDBSelectRequest 可以使用 selectExpression,例如:
select * from your_domain where your_date = '1970-01-01'
如果您知道日期,或者:
select * from your_domain where your_date between '1970-01-01' and '1970-01-05'
如果您只知道日期范围。
请记住,SimpleDB 将日期视为字符串,因此请在查询中适当地格式化您的日期以匹配您存储它们的方式。
-拉里
我已经用您的上述解决方案编写了一段简单的代码
-(void)RunQuery:(NSString*)query{
NSLog(@"Running Query\n");
NSString* selectExpression=query;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
});
@try {
//Code start
SimpleDBSelectRequest *selectRequest = [[SimpleDBSelectRequest alloc] initWithSelectExpression:selectExpression];
selectRequest.consistentRead = YES;
SimpleDBSelectResponse *selectResponse = [sdbClient select:selectRequest];
for (SimpleDBItem *item in selectResponse.items) {
NSLog(@"%@",item.name);
}
//Code end
}
@catch (AmazonServiceException *exception) {
NSLog(@"Exception = %@", exception);
}
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
});
});
}