2016-07-29 72 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