类型'MSTable?'的价值没有成员'pullWithQuery'

时间:2018-02-05 17:02:16

标签: swift azure azure-mobile-services

我尝试更改Azure服务器中的客户端页面大小 它的默认值是50,我想让它更大 所以我在这个链接中使用Microsoft教程 https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-ios-how-to-use-client-library#querying

var client : MSClient?
let client = MSClient(applicationURLString: "AppUrl")
let table = client.tableWithName("TodoItem")
let query = table.query()
let pullSettings = MSPullSettings(pageSize: 3000)
but when I write 
table.pullWithQuery(query, queryId:nil, settings: pullSettings) { (error) in
    if let err = error {
        print("ERROR ", err)
    }
}

有错误“MSTable类型的价值?”没有成员'pullWithQuery'“

有什么问题? 功能名称是否已更改?

1 个答案:

答案 0 :(得分:0)

两个问题:

  1. 当前版本的Swift尚未更新文档 (已提交更新请求)。现代Swift中正确的函数名是pull而不是pullWithQuery。
  2. pullWithQuery函数在MSSyncTable上,而不是MSTable。 Pull是离线同步系统的一部分。读取MSTable模拟。
  3. 更多详情:

    SDK本身将函数定义为MSSyncTable.pullWithQuery,但Swift 3.0的一个特性是它将Objective C方法投影到Swift中以从名称中删除冗余参数时重命名,因此verbWithX(X)变为动词(使用:x)和pullWithQuery(MSQuery)变为拉(使用:MSQuery)。

    有关Swift 3更改的详细信息,请参阅https://swift.org/blog/swift-3-0-released/。我相信这个特殊的变化是SE-0005: Better Translation of Objective-C APIs Into Swift

    如果您从Azure门户下载Swift快速入门,那么您将在那里获得正确的现代模式:

    self.table!.pull(with: self.table?.query(), queryId: "AllRecords") 
    

    或与你的论点:

    self.table!.pull(with: self.table?.query(), queryId: nil, settings: pullSettings)