Parse.com:如何正确检查字段是否为空?

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

当使用查询从Parse检索对象时,我曾经通过检查空字段来检查空字段。 if!= nil ….然后这样做等等….

显然,这不是正确的方法,因为即使Parse上的字段为空,也不会被swift认为是零。

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

编辑:Objective-c的答案在swift中不起作用,除非value是一个布尔值,你必须将它与nil(这里引起问题)或其他东西进行比较,看它是否存在。

好的,这是我在调查后发现的:

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

除String外的其他字段不能包含“”。 它们包含值或未定义。

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

你会使用whereKeyExists:

查看Parse文档

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

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

这是我用来检查包含文件的字段是否为空。 由于值可以是(undefined)或(null)。

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

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

 entity == "" 

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

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

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

 - (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"); } }