1

使用PFObject并且PFQuery我在调试这段代码时遇到了麻烦:

.......

if let someContents = object.valueForKey("contents") {
    let query = PFQuery(className: "TheContentList")
    do {let object = try query.getObjectWithId(someContents.objectId)
        print(object)
    } catch {
        print(error)
    }
}

使用上面的代码,我得到以下编译器消息getObjectWithId

Cannot convert value of type 'String?!' to type 'String' in coercion

如果我改变:

query.getObjectWithId(someContents.objectId)

至:

query.getObjectWithId("xyz23AcSXh")

它编译并在调试器中我得到这个:

(lldb) p someContents.objectId
(String?!) $R4 = "xyz23AcSXh"

程序按预期打印一个对象。

所以问题是:我应该如何编写 query.getObjectWithId 行才能使用 someContents 中的内容?

4

1 回答 1

1

你的财产objectId,是一个Explicitly Unwrapped Optional,一个Optional。如果您确定它包含一个String,请使用以下方法解包:

let object = try query.getObjectWithId(someContents.objectId!!)

否则,如果您不确定:

if let objectId = someContents.objectId, id = objectId {
    let object = try query.getObjectWithId(id)
}
于 2016-07-19T02:37:23.803 回答