【问题标题】:Swift 2.0: Type of expression is ambiguous without more context (Using Parse)Swift 2.0:表达式的类型在没有更多上下文的情况下是模棱两可的(使用 Parse)
【发布时间】:2015-10-21 14:27:09
【问题描述】:

我不断收到错误消息“表达式类型不明确,没有更多上下文”。我的代码如下:

func fetchUnviewedUsers(callback: ([User]) -> ()) {

PFQuery(className: "Action").whereKey("byUser", equalTo: (PFUser.currentUser()?.objectId)!).findObjectsInBackgroundWithBlock { (objects, error) -> Void in

   let seenIDS = map(objects, {$0.objectForKey("toUser")!})
    PFUser.query()!
        .whereKey("objectId", notEqualTo: PFUser.currentUser()!.objectId!)
        .whereKey("objectId", notContainedIn: seenIDS)
        .findObjectsInBackgroundWithBlock({
            objects, error in
            if let pfUsers = objects as? [PFUser] {
                let users = pfUsers.map({pfUserToUser($0)})
                callback(users)
            }
            }
    )
}
}

错误在这一行:

   let seenIDS = map(objects, {$0.objectForKey("toUser")!})

特别是在“$0”处。

另外,我很确定在 Swift 2.0 中你不能像上面的代码那样使用 'map' 函数。这段代码不是我的,但我一直在努力将它从 Swift 1.2 转换为 2.0,这是我遇到的最后一个问题。

希望比我知识渊博的人能提供帮助!谢谢!

【问题讨论】:

    标签: xcode swift dictionary parse-platform swift2


    【解决方案1】:

    试试这个:

    let seenIDS = objects?.map { ($0 as? NSDictionary)?.objectForKey("toUser") as! String } ?? []
    

    【讨论】:

    • 试过了,得到了更多错误:“从 '[AnyObject]' 转换为不相关类型 'PFObject' 总是失败”和“'map' 不可用:在与上一个错误相同的行上调用可选值的“map()”方法”。和“无法转换'AnyObject??'类型的值到.whereKey("objectId", notContainedIn: seenIDS)行上的预期参数类型'[AnyObject]'
    • 谢谢你帮我解决这个问题。非常感谢
    • 我在上面编辑了我的答案,但我假设您期待一个字符串数组(toUser 值是字符串类型)。如果什么都没有,你应该得到一个空字符串。
    • 为我工作!非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2017-04-17
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多