2017-06-29 2 views
0

私はMSGraphSDKを使用してMicrosoft Graphを使用するすべてのユーザーを取得していますが、最初のユーザーバッチを取得できます(デフォルトのバッチサイズは100です)。私は、以下に示すように最初のバッチを取得することができるが、私は、フレームワークは、次のバッチの取得がサポート方法を見ることができない... nextLinkがあり、要求オブジェクトであるのに対し、Swift 3でMSGraphSDKを使用しているユーザーの次のバッチを取得するには

func getUsers(...) { 
    var i = 0 

    self.graphClient.users().request().getWithCompletion{ 
    (collection:MSCollection?, nextLink:MSGraphUsersCollectionRequest?, error:Error?) in 

    if let nsError = error { 
     NSLog("failed - message: \(nsError.localizedDescription)") 
    } else { 
     if let users = collection { 

     for user: MSGraphUser in users.value as! [MSGraphUser] { 
      i = i+1 
      print("\(i): \(user.optDisplayName ?? "<empty>")") 

      self.save(user) 
     } 

     // TODO: Handle next batch... 
     if users.nextLink != nil { 
      //self.getNextUsers(users.nextLink) 
     } 
     } 
    } 
    } 
} 
+0

こんにちは、users.nextLinkとnextLinkの価値観は何ですか? –

+0

期待どおりの次のバッチのリンクが表示されます...しかし、フレームワークは自動的にそれらをフェッチしませんし、リクエストでnextlinkを使用する方法を見ることができます。 –

答えて

0

users.nextLinkは、URLリンクですgetWithCompletionで呼び出すことができる次のページのURLで初期化され、表示されているリクエストと同じパターンに従います。

+0

Well私はSwift 3(およびiOS)の新機能です - 例を挙げてください...無限ループのみを取得します... –

+0

getNextUsersの実装では、 'nextLink'があったかどうかを確認する必要がありますset - 設定されている場合は、新しいページが利用可能になります。そうでなければ、それが無ければ、あなたは完了です。あなたが早期に終了したいのであれば、私はメソッドにパラメータを追加して、ページ(またはリソース)のカウントが特定のポイントまで達したことを追跡し、制限に達したときに終了することができます。それは役に立ちますか? – dpim

+0

SDKフレームワークを使用してこれがどのように行われているかわかります。request()にいくつかのオプションを追加することはできますが、他には何も追加できません。スカイプトークンを追加しようとしましたが、機能しませんでした。 私は実際にMSGraphSDKをスキップして、現在はp2.OAuth2を使用しています。これで、リクエストを制御することができます(SDKがサポートしていないユーザーのデルタリクエストとベータメソッドが必要でした)。 しかし、私はこの問題がまだMSGraphSDKを使用している他の人に関係があると思います... –

関連する問題