AWS iOS SDK委托方法未被调用

MCK*_*pur 1 amazon-web-services amazon-simpledb ios

我正在使用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");
}
Run Code Online (Sandbox Code Playgroud)

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

这是我创建选择查询的代码:

        SimpleDBSelectRequest *sReq = [[SimpleDBSelectRequest alloc] initWithSelectExpression:SELECT_STRING andConsistentRead: YES];

    sReq.delegate = self;

    sReq.requestTag = FIND_FRIENDS_SDB;

    [sdbClient select: sReq];
Run Code Online (Sandbox Code Playgroud)

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

我的问题在这里是什么?谢谢!

更新:

得到了委托工作.获取与我的SimpleDB SELECT查询相关的错误,显然我的SELECT表达式的语法无效.我得到两个错误,因为我正在做两个查询,这里是每个的SELECT表达式:

从trvlogue-app中选择*,其中Type ='account'AND itemName()='me%40rohankapur.com-account'

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

选择来自trvlogue-app的电子邮件地址('kate-bell%40mac.com','www.creative-consulting-inc.com','d-higgins%40mac.com','John-Appleseed%40mac.com ", '安娜 - 哈罗%40mac.com', '绞纱zakroff%40mac.com')

那就是检查域中的Email属性中是否存在这些字符串.

注意:

修复它,显然在使用SELECT表达式时,域名不能有破折号.或者破折号似乎以某种方式打破了这些要求

Yos*_*uda 5

使用时AmazonServiceRequestDelegate,此博客文章可能会有所帮助.基本上,你需要:

  1. 避免在后台线程中使用AmazonServiceRequestDelegate.
  2. 保留对客户的强烈参考.
  3. 保留对代表的强烈引用.

此外,您应确保[AmazonErrorHandler shouldNotThrowExceptions]在未实施时调用request:didFailWithServiceException:.请查看此博客文章了解详细信息.