我在iOS / Swift应用程序的上下文中问这个:
当使用查询从Parse检索对象时,我曾经通过检查nil来检查空字段。 if!= nil ....然后这样做等等......
显然,这不是执行此操作的正确方法,因为即使Parse上的字段为空,也不会被swift视为nil。
那么要检查以确定字段是否为空,以及各种Parse支持的类型:字符串,数字,数组.....?
编辑:Objective-c的答案在swift中不起作用,除非value是一个布尔值,你必须将它与nil(这里引起问题)或其他东西进行比较,看它是否存在。
答案 0 :(得分:2)
您可以使用whereKeyExists:
如果要检索具有特定键集的对象,可以使用whereKeyExists。相反,如果您想要检索没有特定对象的对象 密钥集,你可以使用whereKeyDoesNotExist。
// Finds objects that have the score set
[query whereKeyExists:@"score"];
答案 1 :(得分:2)
好的,这是我在调查后发现的:
在解析浏览器上看起来为空的字符串字段,实际上包含""。只有当该领域特别具有" undefined"在它中它是零,你可以与===而不是==进行比较。不知道为什么,如果有人知道......
除String之外的其他字段,不能包含""。它们包含值或未定义。
因此,如果你需要知道一个字段是否为零或者不包含任何值,如果它是一个字符串,则将其与==""进行比较。和=== nil,如果它不是字符串,则使用=== nil。
答案 2 :(得分:1)
这是我用来检查包含文件的字段是否为空。由于该值可以是(undefined)或(null)。
func isParseNull(obj : AnyObject!) -> Bool {
if obj == nil {
return true
}
if obj as NSObject == NSNull() {
return true
}
return false
}
答案 3 :(得分:0)
我非常确定Parse文档说的是!= nil但是你可以试试
entity == ""
答案 4 :(得分:0)
我会扩展String类并执行以下操作
extension String {
func isOnlyEmptySpacesAndNewLineCharacters() -> Bool {
return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).length == 0
}
}
答案 5 :(得分: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");
}
}