2016-07-29 70 views
2

不要标记为重复,编辑这篇文章已将其与其他可能的重复文章区分开来。 我正在将用户注册到我的应用程序中。我必须尽量拒绝尽可能多的粗俗用户名,因为每个人都可以看到它们。什么迄今为止我所做的是:如何检查用户名对FireBase数据快照的亵渎

  1. UITextView
  2. 收集建议的用户名从我Firebase数据库

我返回snapshot作为其默认的返回类型拉不允许的词的列表,所以,从这里开始,我需要搜索所述快照以获取所提出的用户名的任何相似性。我怎样才能做到这一点?下面是一些我使用下面的代码:

func nameFilter(input : String)-> Bool{ 
    var profanity : Bool = false 
    let dataRef = FIRDatabase.database().reference() 
    dataRef.child("Profanity").observeSingleEventOfType(.Value) { (snap: FIRDataSnapshot) in 
     if(snap.exists()){ 
      if(snap.hasChild(input)){ 
       print("profanity") 
       profanity = true 
      }else{ 
     profanity = false 
     } 
     }else{ 
      print("null") 
     } 
    } 
    return profanity 
} 

这似乎并没有在所有的工作,所以没有任何人在这里有任何想法,我能试试吗?无论我通过它什么,这个函数似乎总是返回错误。

+1

如果您已经将它存储为一个长字符串,请参见[如何检查字符串是否包含Swift中的另一个字符串?](http://stackoverflow.com/questions/24034043/how-do-i-check - 如果-A-字符串包含-另一串功能于SWIFT)。 –

+0

@FrankvanPuffelen更新的信息,不保存为字符串,因为这实际上是不可能的。它被保存为某种列表。我如何搜索这个? – Ethan

+1

'亵渎=假'应该是大写? – Seth

回答

2

我照顾这一个我自己,我曾经完成的代码,这是:

func nameFilter(input : String)-> Bool{ 
    var profanity : Bool = true 
    let dataRef = FIRDatabase.database().reference() 
    dataRef.child("Profanity").observeSingleEventOfType(.Value) { (snap: FIRDataSnapshot) in 
     if(snap.exists()){ 
      if(snap.value! as! NSArray).containsObject(input){ 
       print("our ears!") 
       profanity = true 
      }else{ 
      profanity = false 
     } 


    } 


} 
    return profanity 
} 

希望这是对别人有用,因为它是如此。

+0

好吧,但你如何处理一个像字符串的情况下“刺客”或“类”与“屁股”.contains方法将标记所有 – Fallah