Сегодня проблема была уловлена.Заберите число человек из AddressBook и сравните его с Parse DB
Я использую DigitsKit + Parse, DigitsKit для пользовательской проверки подлинности и анализа в качестве полезной структуры, чтобы упростить использование sinUp, login и т. Д. Для пользователей и меня.
Вот как это работает:
Пользователи введите свой PHONENUMBER и пароль в TextField
После этого DigitsKit проверки с SMS и короткий код, который пользователь реален, смс пришла к USER и он/она набирает его в валидации textField. ЕСЛИ все в порядке -> имя пользователя и пароль хранятся в . Разбирайте DB как PFUser.
имя пользователя (в ParseDB) = user'sMobilePhone (в TextField)
Чем после регистрации и авторизации пользователя нажать на кнопку «FindFriends» на новый взгляд и здесь должны быть друг-поисковую систему, но у меня есть проблема здесь ... Посмотрите случай для контроллера ниже, пожалуйста:
import UIKit import SwiftAddressBook import AddressBook import Parse class FriendsViewController: UIViewController { let status : ABAuthorizationStatus = SwiftAddressBook.authorizationStatus() var addrssbk : ABAddressBook! var addressBook: SwiftAddressBook? = swiftAddressBook override func viewDidLoad() { super.viewDidLoad() GetContactNumbers() } override func viewDidAppear(animated: Bool) { } func createAddressBook() -> Bool { if self.addressBook != nil { return true } var err : Unmanaged<CFError>? = nil let addrssbk : ABAddressBook? = ABAddressBookCreateWithOptions(nil, &err).takeRetainedValue() if addrssbk == nil { println(err) self.addressBook = nil return false } self.addrssbk = addrssbk return true } func determineStatus() -> Bool { let status = ABAddressBookGetAuthorizationStatus() switch status { case .Authorized: return self.createAddressBook() case .NotDetermined: var ok = false ABAddressBookRequestAccessWithCompletion(nil) { (granted:Bool, err:CFError!) in dispatch_async(dispatch_get_main_queue()) { if granted { ok = self.createAddressBook() } } } if ok == true { return true } self.addressBook = nil return false case .Restricted: self.addressBook = nil return false case .Denied: self.addressBook = nil return false } } func GetContactNumbers() { swiftAddressBook?.requestAccessWithCompletion({ (success, error) -> Void in if success { if let people = swiftAddressBook?.allPeople { for person in people { if let numbers = person.phoneNumbers { let names = person.compositeName NSLog("%@", numbers.map({$0.value})) NSLog("%@", names!) if let query = PFUser.query() { query.whereKey("username", equalTo: "\(person.phoneNumbers)") var friends = query.findObjects() println(friends) } //the value entry of the multivalue struct contains the data } } } //do something with swiftAddressBook }else { //no success. Optionally evaluate error } }) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
Я не могу взять каждый PHONENUMBER и сравнить его с именем пользователя в ParseDB, любые предложения, как я должен надеть это ? Или любые хиты/решения?
PS, у меня есть проблемы с kind'a массивов, словарей и других типов массива/ключ-значение данных и петли, а также, так что любая помощь будет совершенным
Возможно, проблема связана с тем, что в ParseDB формат номера отличается от AddressBook? –