1

我不知道如何在 Azure 中执行查询。我终于弄清楚了插入,但现在我试图从 Azure 查询。这里有两部分,如何从 Azure 返回结果以及如何在 Objective-C 中读取结果?

到目前为止,我有这个

-(double)GetValidAppVersion
{
// Create a proxy client for sending requests to the Azure platform.
MSClient *client = [MSClient clientWithApplicationURLString : @""
                                         withApplicationKey : @"];
MSTable *appSettingsTable = [client getTable:@"AppSettings"];
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"Key == AppVersion"];
NSArray *queryResults = [[NSArray alloc] init];
[appSettingsTable readWhere:predicate completion:^(NSArray *results, NSInteger totalCount, NSError *error)
{
    self.items = [results mutableCopy];
}];

return 1.0;

}

我也没有弄清楚Azure方面。如何根据输入参数查询并返回结果?

我的表很简单,ID 为 int Key varchar Value varchar

非常感谢您对实现这一目标的任何帮助。

编辑:

我将此添加到我的控制器中

-(bool) IsAppVersionValid
{
    AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
double validAppVersion = [delegate.appVersion doubleValue];
double serverAppVersion;

NSDictionary *item = @{ @"complete" : @(NO) };
[self.Service SelectAppVersion:item completion:^(NSUInteger index)
{
}];

return true;//clientVersion >= validAppVersion;
}

这对我的服务(这很草率,因为它应该是一个简单的完成块——我想将 NSString * 与 AppSettings 键值一起传递并在谓词中使用它。对此语法有什么想法吗?

typedef void (^CompletionWithAppVersionBlock)(NSUInteger index);

- (void) SelectAppVersion:(NSDictionary *) item
completion:() completion;
4

1 回答 1

2

作为 iOS SDK for Mobile Services 一部分的所有读取表读取方法都是异步的,这意味着您必须将完成块传递给它们(正如您在上面设置 self.items = [results mutableCopy ];) 以便对他们获取的结果做一些事情。

这意味着为了获得您正在寻找的值,您需要将完成块传递给您的 GetValidAppVersion 方法。然后,您可以将要返回的应用程序版本传递给该块。所以是这样的:

-(void) GetValidAppVersion:(NSDictionary *)item completion:(CompletionWithVersion)completion
{
    MSTable *appSettingsTable = [client getTable:@"AppSettings"];
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"Key == AppVersion"];
    NSArray *queryResults = [[NSArray alloc] init];
    [appSettingsTable readWhere:predicate completion:^(NSArray *results, NSInteger totalCount, NSError *error)
    {
        completion([results objectAtIndex:0]);
    }];
}

您需要将 CompletionWithVersion 定义为带有返回参数的块(AppVersion)。查看 iOS 快速入门应用程序,了解如何定义完成块。

于 2013-02-07T04:06:28.923 回答