Swift 3 解析查询
Posted
技术标签:
【中文标题】Swift 3 解析查询【英文标题】:Swift 3 Parse query 【发布时间】:2016-09-10 08:31:20 【问题描述】:我将 swift 2 更新为 swift 3 后出现错误
var nicknames = [String]()
var messages = NSArray()
var selectedmsg:PFObject!
query.findObjectsInBackground
(objects, error) -> Void in
if error == nil
messages = objects! ***Cannot assign value of type '[PFObject]?' to type 'NSArray'***
for object in objects!
self.nicknames.append(object.object(forKey: "userpointer")!.object(forKey: "nickname") as! String) ***Value of type 'Any' has no member 'object'***
self.selectedmsg = messages.object(at: (indexPath as NSIndexPath).row) as! PFObject
self.selectedmsg["file"]!.getDataInBackground ***Value of type 'Any' has no member 'getDataInBackground'***
***之间的代码有三个错误
代码在 swift 2 中运行良好,有人可以帮我在 swift 3 中修复相同的代码吗 请任何帮助将不胜感激。
【问题讨论】:
为什么这个网站没有答案了? 你是怎么解决的 我也遇到了同样的问题,这是你的第二个错误? @saner 显示您在 pastebin.com 中的错误代码 【参考方案1】:一如既往,除非别无选择,否则不要在 Swift 中使用 NSArray
。
NSArray
不提供任何类型信息,因此编译器不知道它实际上包含PFObject
对象。
在这种情况下,您可以选择!通过将messages
声明为
var messages = [PFObject]()
这个微小的改变将解决所有三个错误。
【讨论】:
谢谢,它只修复了第一个错误。但我仍然有错误,因为 var 消息已更改为 pfobject。看到这个:i.gyazo.com/bb014d1d308b57c67b8bf05714f54492.png 您必须将Any
值转换为正确的类型。如果密钥订阅不起作用,请尝试objectForKey
您能否编辑您的答案并向我展示代码示例以及如何像使用 NSArray 一样获取每一行?会有帮助的。
这取决于字典中值的类型。例如键file
的值很可能是PFObject
,所以你写(self.selectedmsg["file"] as! PFObject).getDataInBackground...
,而不是objectAtIndex
尝试索引下标objects[indexPath.row]
。不幸的是,我根本不使用 Parse。你也可以尝试重新输入方法以获得准确的 Swift 3 语法。【参考方案2】:
我遇到了同样的问题。我不得不更改以修复我的应用程序无法在 Swift 3 中工作
AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
并准备好转场:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
【讨论】:
谢谢,我已经改成那个func应用了,但是还是一样的错误。我不知道准备 segues,因为 appdelegate 默认我没有在那里添加函数以上是关于Swift 3 解析查询的主要内容,如果未能解决你的问题,请参考以下文章