使用 Parse 方法 getObjectInBackgroundWithId 将 objectId 从 viewDidLoad 传递给另一个函数不起作用
Posted
技术标签:
【中文标题】使用 Parse 方法 getObjectInBackgroundWithId 将 objectId 从 viewDidLoad 传递给另一个函数不起作用【英文标题】:Passing objectId from viewDidLoad to another function using Parse method getObjectInBackgroundWithId not working 【发布时间】:2015-08-26 20:14:44 【问题描述】:我是使用 Parse 和 Swift 的初学者。我需要在同一控制器内的另一个函数中更新我的 viewDidLoad 中引用的对象。如何传递当前加载的对象的 objectId 而不必像这样对其进行硬编码:
query.getObjectInBackgroundWithId("8DkYgraEJq")
这是我的 viewDidLoad 函数:
override func viewDidLoad()
var query = PFQuery(className: "CheckedBaggage")
query.orderByAscending("createdAt")
query.whereKey("respondedTo", notEqualTo: true)
query.getFirstObjectInBackgroundWithBlock
(CheckedBaggage: PFObject!, error: NSError!) -> Void in
if error != nil
println("The getFirstObject request failed.")
else
// The find succeeded.
self.randomBaggageLabel.text = CheckedBaggage.objectForKey("message") as? NSString
CheckedBaggage.save()
println(CheckedBaggage.objectId)
let baggageId = CheckedBaggage.objectId
println("Successfully retrieved the object.")
我想尝试将变量 bagId(它应该是对象的 ID 作为字符串)作为参数传递给我的 carryIt 函数中的 getObjectInBackgroundWithId 块:
@IBAction func carryIt(sender: AnyObject!)
println("CarryIt is being called")
var query = PFQuery(className: "CheckedBaggage")
query.getObjectInBackgroundWithId(baggageId)
(CheckedBaggage: PFObject?, error: NSError?) -> Void in
if error != nil
println(error)
else if let CheckedBaggage = CheckedBaggage
println("object hello!")
CheckedBaggage["respondedTo"] = true
CheckedBaggage["response"] = self.kindnessMessage.text
CheckedBaggage.save()
但我收到“未解析的标识符”错误。如果我硬编码对象 ID,它会完美地更新我的 Parse 数据库,但我不能这样做。下面是报错截图:
非常感谢您的帮助!
【问题讨论】:
在类级别声明 bagId。它不能在函数之外访问。 很高兴这是一个如此简单的修复。谢谢! 【参考方案1】:你必须初始化baggageId。要在多个功能中使用它,它必须在类级别的范围内,如评论所述。要在声明后设置它,它必须是“var”,而不是常量“let”。
var baggageId = ""
func viewDidload()
var query = ...
query.get...
baggageId = CheckedBaggege.objectId
func shipIt()
var query = ...
query.getObjectWithId(baggageId) ...
【讨论】:
以上是关于使用 Parse 方法 getObjectInBackgroundWithId 将 objectId 从 viewDidLoad 传递给另一个函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
url.parse() 的替换方法new URL(),URl.parse()的使用。
如果使用 Parse 主密钥,是不是可以检查 beforeSave 方法内部?
qs.parse()qs.stringify()JSON.parse()JSON.stringify()使用方法