使用Swift解析“快速启动” - “PFObject”没有名为“下标”的成员

时间:2015-09-11 13:39:28

标签: ios swift parse-platform

这是我第一次尝试使用Parse on Swift,我按照Parse网站上的快速入门指南进行了操作:https://parse.com/apps/quickstart#parse_data/mobile/ios/swift/existing

不幸的是我得到了这个错误,'PFObject'没有名为'subscript'的成员。我完全按照它们编写的方式执行了示例代码和指令,并重复了几次,但结果相同。我真的没有看到我在哪里出错,特别是因为它直接离开了网站。我正在使用Parse库1.8.3版本的Xcode 6.4定位iOS SDK 8.4。

这是viewDidLoad方法中ViewController的代码(我记得包含import Parse)

let testObject = PFObject(className: "TestObject")
testObject["foo"] = "bar"
testObject.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
  println("Object has been saved.")
}

这是我添加到AppDelegate的代码。我再次按照指南中的说明导入了Parse和Bolts。这是我改变的唯一代码,其余的是作为标准的空白单视图应用程序。我已经编辑了应用程序ID和客户端密钥。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

Parse.enableLocalDatastore()

Parse.setApplicationId("-redacted-",
  clientKey: "-redacted-")

PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
}

关于如何解决这个问题或我可能出错的地方的任何想法?

2 个答案:

答案 0 :(得分:0)

你可能会等待一个更好的答案,其中有人解释了swift unwrapping和可选类型,因为它与解析对象有关(我希望我有资格给出这样的答案)。在此期间,快速修复是绕过object["foo"]糖,并使用属性访问的功能形式,如object.objectForKey("foo")

答案 1 :(得分:0)

我尝试了它并得到了相同的结果。 我也尝试过做

testObject.setValue("bar", forKey: "foo")

发生同样的错误。好像是插入“nil”而不是值或对象。我不知道为什么。

我可以建议的是,使用Parse.com中的Objective-C文件,然后创建桥接头文件。

然后执行Swift语言提供的代码 - AppDelegate.swift中的代码和带有viewDidLoad的代码。

代码应该有效。

我认为必须与他们的Swift语言新框架存在问题/不兼容。我不确定。

发生同样的错误,请使用

testObject.setValue("bar", forKey: "foo")

以换取:

testObject["foo"] = "bar"

虽然我读过这个...... 我不知道这是否与他们的启动项目中的问题有关: 'PFObject' does not have a member named 'subscript'