【问题标题】:Parse.com error: invalid type for key '', expected array, but got string (Code: 111, Version: 1.8.3)Parse.com 错误:键“”的类型无效,预期数组,但得到字符串(代码:111,版本:1.8.3)
【发布时间】:2015-09-16 07:08:28
【问题描述】:

我在 Swift 中使用 Parse 框架。我有以下代码

var user = PFUser()
user.username = "username"
user.password = "password"
user.addObject("firstname", forKeyedSubscript: "firstName")
user.addObject("lastName", forKeyedSubscript: "lastName")
user.addObject("mobileNumber", forKeyedSubscript: "mobile")
user.addObject("city", forKeyedSubscript: "city")

user.signUpInBackgroundWithBlock { succeeded, error in
    if (succeeded) {
        //The registration was successful
    } else if let error = error {
        //Something bad has occurred
    }
}

在门户网站中,它显示如下:

它使用我给出的键在列中创建“数组”。我希望它们成为字符串。因此,我已将代码更改为以下内容。因此,我将 addObject 更改为 setObject 如下:

var user = PFUser()
user.username = "username"
user.password = "password"
user.setObject("firstname", forKeyedSubscript: "firstName")
user.setObject("lastName", forKeyedSubscript: "lastName")
user.setObject("mobileNumber", forKeyedSubscript: "mobile")
user.setObject("city", forKeyedSubscript: "city")

user.signUpInBackgroundWithBlock { succeeded, error in
    if (succeeded) {
        //The registration was successful
    } else if let error = error {
        //Something bad has occurred
    }
}

显示如下错误

[Error]: invalid type for key city, expected array, but got string (Code: 111, Version: 1.8.3)

如何使用 Swift 代码在带有键的列中添加字符串?

【问题讨论】:

    标签: swift parse-platform pfuser


    【解决方案1】:

    您需要在 parse.com 门户上将 cityfirstNamelastNamemobile 的列类型更改为 String。您需要删除这些列并添加具有相同名称和正确类型的新列。

    【讨论】:

    • 不,必须在门户网站上完成。您在 parse.com 上创建了数据类型不正确的列。您可以将它们用作数组:user["city"] = ["New York"] 但我很确定这不是您想要实现的。使用正确的类型重新创建解析列,你会没事的。
    • 最初,我没有在 parse.com 门户网站上创建任何列。通过运行上面的代码,它自动创建了带有数组的列。但是,我希望它使用我的代码创建带有字符串的列。
    【解决方案2】:

    问题是您已经在此实体上创建了与您现在想要设置的类型不同的列。

    根据您数据库中的数据量,我建议您删除这些列。您必须使用 Parse 仪表板执行此操作。

    【讨论】:

    • 我没有创建任何列。我已经运行了上面的代码,并且这些列是由解析框架自动创建的。现在,我希望它使用代码创建带有字符串的列。
    • 是的,你做到了。您不必在网站上创建它们。保存具有新属性的对象足以创建一列。为同一列使用不同对象类型的另一个保存将失败,更改列类型的唯一可能性是删除它(在网站上)并再次创建(在网站上或在应用程序中)。您也可以使用具有新名称的新列。如果您想保留数据,您可能需要通过云代码作业进行自定义数据迁移。
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多