2017-06-29 58 views
0

我使用MSGraphSDK來獲取所有使用Microsoft Graph的用戶 - 但我只能獲得第一批用戶(默認批量大小爲100)。我能夠獲得首批如下圖所示,但我不能看到框架是如何支持獲取下一批......如何在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

Hi Kim,你看到了什麼值爲users.nextLink和nextLink? –

+0

按預期看到下一批的鏈接...但框架不會自動獲取它們,我可以看到如何使用請求中的下一個鏈接。 –

回答

0

users.nextLink是URL鏈接,而nextLink是有一個請求對象使用getWithCompletion可以調用的下一頁的URL進行初始化,並遵循與所示請求相同的模式。

+0

Welll我是Swift 3(和iOS)的新手 - 你能否提供一個例子...我只能得到一個無限循環... –

+0

在你實現getNextUsers時 - 你應該檢查'nextLink'是否已經設置 - 如果已設置,則可以使用新的頁面。否則,如果它是零,你就完成了。如果您想盡早終止,我會爲方法添加一個參數,以跟蹤頁面(或資源)數量達到某個點的數量,以便您可以在達到限制時終止。這有幫助嗎? – dpim

+0

我可以看到這是如何使用SDK框架完成的......您可以將一些選項添加到請求(),但沒有其他。我試圖添加skiptoken,但它不起作用。 我實際上跳過了MSGraphSDK,現在使用p2.OAuth2。現在我可以控制這些請求(需要一個beta方法和SDK不支持的用戶的增量請求)。 但我認爲這個問題仍然與其他人使用MSGraphSDK相關... –

相關問題