这是我第一次尝试使用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)
}
关于如何解决这个问题或我可能出错的地方的任何想法?
答案 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'