【问题标题】:Parse.com: How to properly check if a field is empty?Parse.com:如何正确检查字段是否为空?
【发布时间】:2014-11-20 11:28:11
【问题描述】:

我在 iOS / Swift 应用程序的上下文中问这个问题:

当使用查询从 Parse 中检索对象时,我过去常常通过检查空字段与 nil 来检查它们是否存在。如果 != nil.... 则执行此操作等....

显然,这不是正确的方法,因为即使 Parse 上的字段为空,swift 也不会将其视为 nil。

那么要检查什么来确定一个字段是否为空,以及各种 Parse 支持的类型:字符串、数字、数组.....?

编辑:objective-c 的答案在 swift 中不起作用,除非 value 是布尔值,否则您必须将其与 nil (这会导致问题)或其他东西进行比较,以查看它是否存在。

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    你会使用whereKeyExists:

    查看Parse documentation

    如果要检索具有特定键集的对象,可以使用 whereKeyExists。相反,如果您想检索没有特定 密钥集,可以使用 whereKeyDoesNotExist。

    // Finds objects that have the score set
    [query whereKeyExists:@"score"];
    

    【讨论】:

    • 谢谢,但这与检索对象无关:我需要在本地测试对象的字段
    【解决方案2】:

    好的,这是我经过一番调查后发现的:

    在解析浏览器上看起来为空的字符串字段,实际上包含“”。只有当字段中明确包含“未定义”时,它才为 nil,您可以将其与 === 而不是 == 进行比较。不知道为什么,如果有人知道....

    字符串以外的其他字段,不能包含“”。它们要么包含值,要么未定义。

    因此,如果您需要知道一个字段是否为 nil 或不包含任何值,如果它是一个字符串,则将其与 == "" 和 === nil 进行比较,如果它不是字符串则使用 === nil。

    【讨论】:

      【解决方案3】:

      这是我用来检查包含文件的字段是否为空的。因为值可以是(未定义)或(空)。

      func isParseNull(obj : AnyObject!) -> Bool {
          if obj == nil {
              return true
          }
          if obj as NSObject == NSNull() {
              return true
          }
          return false
      }
      

      【讨论】:

        【解决方案4】:

        我很确定 Parse 文档说 !=nil 但是你可以试试

        entity == ""
        

        【讨论】:

          【解决方案5】:

          我会扩展 String 类并执行以下操作

             extension String {
                   func isOnlyEmptySpacesAndNewLineCharacters() -> Bool {
                   return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).length == 0
                   }
          }
          

          【讨论】:

            【解决方案6】:

            这是我的方法,因为我也在努力检查字符串在解析中是否为空,这似乎工作正常。

            - (void) nameCheck    
            {
                //--------GET CURRENT USER-------//
                PFUser *user = [PFUser currentUser];
                //----------CHECK IF PARSE IS EMPTY OR TEXTFIELD IS EMPTY-----------//
                if ([user[@"fullname"]  isEqual: @""] || [fieldName.text isEqual:nil])
                {
                    //-IF EMPTY, GIVE USER ANONYMOUS NAME-//
                    user[@"fullname"] = @"Anonymous User";
                    user[@"fullname_lower"] = @"anonymous user";
            
                    //------------------SAVE NEW NAME IN BACKGROUND----------------//
                    [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error)
                     {
                         if (error == nil)
                         {
                             NSLog(@"Saved Username");
                         }
                     }];
                }
                //--ELSE USER'S NAME EXISTS--//
                else
                {
                //--LOAD USER METHOD--//
                [self loadUser];
                NSLog(@"User has username");
                }
            }
            

            【讨论】:

              猜你喜欢
              • 2017-10-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-28
              • 1970-01-01
              • 1970-01-01
              • 2012-02-21
              相关资源
              最近更新 更多