Swift 1.2 StringLiteralConvertable错误

时间:2015-04-09 22:36:17

标签: xcode swift parse-platform

我最近使用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
}

但仍然收到同样的错误

2 个答案:

答案 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块的行丢失了它们的错误。