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

标签 swift azure azure-mobile-services

我尝试更改 Azure 服务器中的客户端页面大小 默认是 50,我想把它调大 所以我在这个链接中使用微软教程 https://learn.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. 当前版本的 Swift 文档尚未更新 (已提交更新请求)。现代 Swift 中正确的函数名称是 pull 而不是 pullWithQuery。
  2. pullWithQuery 函数位于 MSSyncTable 上,而不是 MSTable 上。 Pull 是离线同步系统的一部分。读取 MSTable 模拟。

更多详细信息:

SDK本身将该函数定义为MSSyncTable.pullWithQuery ,但 Swift 3.0 的功能之一是,当将 Objective C 方法投影到 Swift 中时,它会重命名它们,以删除名称中的冗余参数,因此 verbWithX(X) 变为 verb(with:x),而 pullWithQuery (MSQuery) 变为 pull (使用: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) 

关于swift - 类型 'MSTable?' 的值没有成员 'pullWithQuery',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48627724/

相关文章:

ios - 自动调整 UILabel

arrays - 为什么苹果 swift book 初始化像 Int[] 这样的 int 数组,而它只允许在 Playground 中使用 [Int] ?

swift - UItableView 无法快速重新加载数据

azure - Azure DevOps 管道/VS 模板/dockerfile 中存在错误?

c# - 如何重构此 C# 代码

c# - 获取azure中查询行的id

iOS自动转换调用的号码

javascript - REST API azure 语音转文本(已识别 : Text=undefined)

Azure函数: How do you use a POCO in a binding expression with Azure Storage Queue?

ios - 需要用户凭据才能获取访问 token 。请调用非静默的 acquireTokenWithResource 方法