1

Azure でクエリを実行する方法がわかりません。ようやく挿入がわかりましたが、今は Azure からクエリを実行しようとしています。ここでは、Azure から結果を返す方法と、Objective-C で結果を読み取る方法の 2 つの部分について説明します。

これまでのところ、私はこれを持っています

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

そして、これを私のサービスに(これは単純な完了ブロックでなければならないので、ずさんです-AppSettingsキー値で NSString * を渡し、それを述語でも使用したいと思います。その構文に関する考えはありますか?

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 に答える