我最近使用Swift 1.2更新到Xcode 6.3,并收到了300多个错误,其中大部分都涉及添加感叹号。然而,一种不会消失的问题是“'_'不能转换为'StringLiteralConvertable'”的错误。在这些情况下,这会出现多次:
PFCloud.callFunctionInBackground("modifyUser", withParameters: ["objectId":user.objectId, "key":"won", "value":won as AnyObject],block:nil)
PFCloud.callFunctionInBackground("modifyUser", withParameters: ["objectId":friend.objectId, "key":"parties", "value":played], block:nil)
PFCloud.callFunctionInBackground("modifyUser", withParameters: ["objectId":creator.objectId, "key":"left", "value" :left], block: {
(error) in
self.remainingPotatos = PFUser.currentUser()["left"] as! Int
})
错误似乎出现在作为字典键的字符串上,但是,它们按照StringLiteralConvertable的定义。是什么给了什么?
更新
这似乎是Xcode检测错误但不知道哪一个错误的另一种情况。添加'!'后在'objectId'之后,错误切换到关于参数的数据类型。错误消息是:
Cannot invoke 'callFunctionInBackground' with an argument list of type '(String, withParameters:NSDictionary, block(_)->(_)'
哪个部分是问题? (另外,将错误更改为'error:NSError?'会产生类似的结果。
更新
查看Parse文档,块签名应为
^(id result, NSError *error)
我尝试将块更改为
{
(result, error) in
//code
}
但仍然收到同样的错误
答案 0 :(得分:0)
可能不是唯一的问题,但你似乎在"value"!
的一个字典中有一个密钥,它在1.2中无效(并且会在1.1中编译,但没有多大意义)< / p>
import Foundation
let left = "blah" as NSString
let dict = ["value"!:left]
结果为error: '_' is not convertible to StringLiteralConvertible
答案 1 :(得分:0)
这是Xcode在错误的地方检测到错误错误的问题。添加&#39;!&#39;在&#34; currentUser()&#34;之后解决了这个问题,使用nil块的行丢失了它们的错误。