amazon web services - AWS iOS SDK委托方法未被调用



我正在使用Amazon SimpleDB进行选择查询,并且我正在尝试使用AWS AmazonServiceRequestDelegate,这里是委托方法(我已在.h BTW中符合):

- (void)request:(AmazonServiceRequest *)request didFailWithError:(NSError *)error {
    NSLog(@"%@", error.localizedDescription);
}
- (void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data {
    NSLog(@"recieving data");
}
- (void)request:(AmazonServiceRequest *)request didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"response recieved");
}
- (void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response {
    NSLog(@"Completed");
}

它们都被调用,除了didCompleteWithResponse:,这个方法应该在整个操作用响应完成时被调用。didFailWithError:也没有被调用,但我不认为我的操作有任何失败的理由。

下面是我创建select查询的代码:
        SimpleDBSelectRequest *sReq = [[SimpleDBSelectRequest alloc] initWithSelectExpression:SELECT_STRING andConsistentRead: YES];
    sReq.delegate = self;
    sReq.requestTag = FIND_FRIENDS_SDB;
    [sdbClient select: sReq];

其中SELECT_STRINGFIND_FRIENDS_SDB是预定义的,并且对上下文字符串有效。

我的问题是什么?谢谢!

更新:

完成委派工作。得到一个与我的SimpleDB SELECT查询相关的错误,显然我的SELECT表达式的语法无效。我得到了两个错误,因为我正在执行两个查询,下面是每个查询的SELECT表达式:

select * from trvlog -app where Type = 'account' AND itemName() = 'me%40rohankapur.com-account'

查看'Type'属性和'itemName()'并检查它们是否等于域中的某些内容。

select * from trvlog -app where Email in(' katie -bell%40mac.com','www.creative-consulting-inc.com','d-higgins%40mac.com','John-Appleseed%40mac.com','anna-haro%40mac.com','hank-zakroff%40mac.com')

检查这些字符串是否存在于域的Email属性中。

注意:

修复了它,显然当使用SELECT表达式时,域名不能有破折号。或者破折号似乎打破了请求

当使用AmazonServiceRequestDelegate时,这篇博客文章可能会有所帮助。基本上,您需要:

  1. 避免在后台线程中使用AmazonServiceRequestDelegate。
  2. 保留对客户端的强引用
  3. 保留对委托的强引用

另外,您应该确保调用了[AmazonErrorHandler shouldNotThrowExceptions],因为您没有实现request:didFailWithServiceException:

相关内容

  • 没有找到相关文章

最新更新