今日問題が発生しました。
私は DigitsKit + Parse、User real-Validation 用の DigitsKit および Parse を便利なフレームワークとして使用して、ユーザーと私のために簡単に sinUp、ログインなどを行います。
仕組みは次のとおりです。
ユーザーは、textField に電話番号とパスワードを入力します
その後、DigitsKit は SMS と短いコードで検証し、そのユーザーは本物であり、SMS が USER に届き、検証 textField に入力します。すべてが問題ない場合 -> ユーザー名とパスワードを PFUser として Parse DB に保存します。
ユーザー名(ParseDB内) = user'sMobilePhone(テキストフィールド内)
サインアップしてログインした後、ユーザーが新しいビューで「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、私は配列、辞書、およびその他の配列/キー値型のデータとループにもちょっと問題があるので、どんな助けも完璧です