美好的一天,iOS SimpleDB按日期選擇
我想在使用iOS SDK的SimpleDB上選擇一個項目。問題是我知道如何做的唯一方法是使用SimpleDBGetAttributesRequest獲取項目名稱,然後檢查日期屬性並查看它是否與我請求的相匹配。
這絕對是一個可怕的方式來做到這一點,因爲我必須爲此查詢整個數據庫。有沒有簡單的方法來檢查屬性而不是名稱,或選擇日期的方式?
美好的一天,iOS SimpleDB按日期選擇
我想在使用iOS SDK的SimpleDB上選擇一個項目。問題是我知道如何做的唯一方法是使用SimpleDBGetAttributesRequest獲取項目名稱,然後檢查日期屬性並查看它是否與我請求的相匹配。
這絕對是一個可怕的方式來做到這一點,因爲我必須爲此查詢整個數據庫。有沒有簡單的方法來檢查屬性而不是名稱,或選擇日期的方式?
我寫了一段簡單的代碼,這樣你的上述溶液
-(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];
});
});
}
我不是在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會像字符串一樣處理日期,因此請在查詢中適當地格式化日期以符合您存儲它們的方式。
拉里
感謝這部作品 – raaj 2013-05-13 06:36:59
在那裏你會做這樣的事情 [networkLayer RunQuery:@「SELECT * FROM 'TestDate'其中Date> ='2013-05-13T04:21'限制100「] – raaj 2013-05-13 06:37:34