現在Realmを使ってデータベースから値を取得しようとしているのですが、「EXC_BAD_ACCESS」エラーが出て取得できません。「EXC_BAD_ACCESS」は以下のコードのreturn文で表示されています。

public func objects<T: Object>(_ type: T.Type) -> Results<T> {
    return Results<T>(RLMGetObjects(rlmRealm, (type as Object.Type).className(), nil))
}

エラーに関わる範囲のコードを下記に記載します。

// MARK: - IBAction

@IBAction func addNewUser(_ sender: AnyObject) {
    self.showAddNewUserAlert()
}

// MARK: - alertController

func showAddNewUserAlert() {
    let alert:UIAlertController = UIAlertController(title:"登録", message: "名前を入力してね", preferredStyle: UIAlertControllerStyle.alert)
    okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler:{ (action:UIAlertAction!) -> Void in
        let textField = alert.textFields![0]

        if self.checkHasSameUserNameInDatabase(textField.text!) {    //エラーが出るメソッド
            let user = User()
            user.name = textField.text!
            UserManager.sharedManager.insertUser(user)
            UserManager.sharedManager.users.append(user)

            let indexPath = IndexPath(row: UserManager.sharedManager.users.count - 1, section: 0)
            self.tableView.insertRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
        } else {
            self.showFailureAlert()
        }
    })

    let cancelAction:UIAlertAction = UIAlertAction(title: "キャンセル",
        style: UIAlertActionStyle.cancel, handler:{
            (action:UIAlertAction!) -> Void in
    })
    okAction.isEnabled = false
    alert.addAction(cancelAction)
    alert.addAction(okAction)

    alert.addTextField(configurationHandler: {(text:UITextField!) -> Void in
        text.placeholder = "名前"
        text.delegate = self
    })
    present(alert, animated: true, completion: nil)
}

func checkHasSameUserNameInDatabase(_ name: String!) -> Bool {
    let realm = try! Realm()
    let predicate = NSPredicate(format: "name = %@", name) 
    let users = realm.objects(User.self).filter(predicate)    //ここでエラーが出る

    if users.count == 0 {
        return false
    } else {
        return true
    }
}

ちなみにモデルクラスは以下のようになっています。

class User: Object {

    dynamic var id = UUID().uuidString
    dynamic var name: String!
    dynamic var score = 0
    dynamic var characterName = "赤ちゃん"

    override class func primaryKey() -> String {
        return "id"
    }

}

なぜ値を取得できないのでしょうか?
個人的にはバージョンに何か問題があるような気がしているのですが......。
Swiftのバージョンは3.0で、Realmのバージョンは2.0.0で、iOSのバージョンは10.0.1です。
どなたかわかる方がいれば教えていただきたいです。よろしくお願いします。