【问题标题】:Getting a boolean value from a parse object and performing a if/else statement on it in Xcode 7, Swift 2从解析对象获取布尔值并在 Xcode 7、Swift 2 中对其执行 if/else 语句
【发布时间】:2015-11-03 21:31:52
【问题描述】:

标题说明了一切。我已经通读了 Parse 文档,它正好涵盖了我的“编码新手”大脑。如何获取我已经创建的解析布尔对象,并根据它是否为真执行 if/else 语句?

谢谢

【问题讨论】:

  • 你应该更努力一点,想出一些代码,如果它不起作用再回来。这样我们就可以理解并向您解释您需要什么,而不是只给您一些您不会理解的代码。

标签: ios parse-platform swift2 xcode7 pfquery


【解决方案1】:

我使用 obj-c,而不是 Swift,所以我无法为您提供语法方面的帮助,但在 iOS 中,您需要将解析布尔值存储/检索为 NSNumber。所以存储一个布尔值:

[myPFObject setObject:[NSNumber numberWithBool:myBool] forKey:@"myKey"];

用于检索该对象并将其用作 if/else 条件:

NSNumber *boolNumber = [myPFObject objectForKey:@"myKey"];
bool myBool = boolNumber.boolValue;
if( myBool )
...

显然,能够做到这一点取决于从解析中正确保存/获取您的对象,这会让很多人失望,因为它是同步的,就像在多线程中一样。假设您在对象上调用 fetch,然后立即尝试访问该布尔值。您将无法这样做,因为提取发生在单独的线程上,并且您的主线程立即转到您尝试访问它的下一行。您需要使用 PFObjects 的 fetch/saveInBackgroundWithBlock 方法,并对回调内部而不是外部的值做任何您需要做的事情。

【讨论】:

  • 最新版本的 Parse SDK 为您处理整数/布尔转换。您可以像往常一样使用 swift 布尔值,一切都会按预期工作
  • @Russell 哦,这对我来说是个新闻。太棒了,因为我一直认为整个 NSNumber 转换在我的代码中看起来很糟糕。
  • 绝对,我完全同意。在处理一个项目时,我有很长一段时间进行 NSNumber 转换,并且放心地将代码重构为普通布尔值:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多