之前,我已经成功添加了!强制unwrap从变量中删除"Optional()".我无法在Parse.com返回的数据中执行此操作
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
for object in objects {
println(object[myObject]!)
}
} else {
println("Error: \(error) \(error.userInfo!)")
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,将返回Parse.com类中的整个表并将其打印到控制台.然而,
可选的(...)
即使我强行打开使用,也会为每一行返回!在末尾
我错过了什么?
(注意:myObject是Parse Class数据库中Column的名称)
我将尽力解释这个问题.
我正在使用Parse.com并从Parse数据库类返回数据.我想把这个parse.com调用放在自定义类中的自己的函数中.我遇到的问题是完成.它去哪儿了?我已经尝试了很多不同版本的添加到我的功能,但它无法正常工作.
以下是获取类名,表名和排序描述符并返回数组的函数:
func queryDataInBackgroundWithBlock(parseClass:String, parseObject:String, sortDescriptor:NSSortDescriptor) -> [Any]
Run Code Online (Sandbox Code Playgroud)
当我添加完成时,我使用(可能不正确):
func queryDataInBackgroundWithBlock(parseClass:String, parseObject:String, sortDescriptor:NSSortDescriptor, completion: (result: Any)->Void)
Run Code Online (Sandbox Code Playgroud)
现在在函数内部,我使用Parse.com代码来获取数据
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
// Do something with the found objects
for object in objects {
self.arrayOfObjects.append(object[parseObject]!)
}
} else {
// Log details of the failure
println("Error: \(error) \(error.userInfo!)")
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是将参数发送到我的类函数,从parse.com获取数据,然后在异步调用之后将数据作为数组返回
我想这样称呼它:
myClass.queryDataInBackgroundWithBlock("databaseName", parseObject: "columnName", sortDescriptor: orderBy){
(result: Any) in
println(result)
}
Run Code Online (Sandbox Code Playgroud)
这几乎就像是嵌套完成.完成后如何返回数组?是交给函数然后返回它,还是需要在嵌套代码中返回,或者是什么?它检索数据,但问题是完成后返回.
更新:正如我在下面的评论中所述:
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]!, error: NSError!) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Swift编写的Parse.我能够毫无困难地登录,但我正在努力告诉我的应用程序用户已登录.
我正在使用logInWithUsernameInBackground,如果登录成功,我只想返回一个布尔值.
我用的时候:
func authenticateUser() -> Bool{
PFUser.logInWithUsernameInBackground(userName.text, password: passwordField.text, block: {
(user,error) in
return error === nil
})
}
Run Code Online (Sandbox Code Playgroud)
我得到错误"Bool不能转换为Void"这是有道理的.
所以,如果我将第3行更改为:
(user,error) -> Bool in
Run Code Online (Sandbox Code Playgroud)
我最终得到错误"在调用中缺少参数选择器的参数"
但是,此方法不需要选择器参数.
那我哪里错了?如何根据登录时是否有错误返回bool?