1

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

- (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");
}

它们都被调用 except didCompleteWithResponse:,当整个操作完成并响应时应该调用的方法。didFailWithError:也没有被调用,但我看不出我的操作有任何失败的原因。

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

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

    sReq.delegate = self;

    sReq.requestTag = FIND_FRIENDS_SDB;

    [sdbClient select: sReq];

WhereSELECT_STRINGFIND_FRIENDS_SDB是预定义的并且对上下文字符串有效。

我的问题是什么?谢谢!

更新:

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

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

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

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

那就是检查这些字符串是否存在于域中的电子邮件属性中。

笔记:

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

4

1 回答 1

6

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

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

另外,你应该确保你打电话[AmazonErrorHandler shouldNotThrowExceptions],因为你没有实现request:didFailWithServiceException:. 请查看此博客文章以了解详细信息。

于 2013-01-17T20:41:14.553 回答