gpt4 book ai didi

ios - 在 iOS swift 中查询使用我的应用程序的用户(解析)

转载 作者:行者123 更新时间:2023-11-30 14:09:15 27 4
gpt4 key购买 nike

在我的应用程序中,用户存储他们的电话号码。使用电话号码,我进行了一个查询,将地址簿中的电话号码与数据库中存储的电话号码(解析后端)进行比较,以匹配使用该应用程序的用户。问题是我的表没有返回任何数据。我做了基本配置来请求地址簿和表委托(delegate)功能。这是我的查询功能:

import UIKit
import AddressBook
import Parse

class mainContactViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {


@IBOutlet weak var namesTableView: UITableView!


var addressBook: ABAddressBook!
var names:[String]?

func createAddressBook() {

var error: Unmanaged<CFErrorRef>?

addressBook = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()

}

override func viewDidLoad() {
super.viewDidLoad()

self.namesTableView.delegate = self
self.namesTableView.dataSource = self

accessAddressBook()

self.namesTableView.allowsMultipleSelection = true

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func accessAddressBook () {
switch ABAddressBookGetAuthorizationStatus(){
case .Authorized:
println("Already authorized")
createAddressBook()
beginContactSearch()
/* Access the address book */
case .Denied:
println("Denied access to address book")

case .NotDetermined:
createAddressBook()
if let theBook: ABAddressBookRef = addressBook{
ABAddressBookRequestAccessWithCompletion(theBook,
{(granted: Bool, error: CFError!) in

if granted{
println("Access granted")
} else {
println("Access not granted")
}

})
}

case .Restricted:
println("Access restricted")

default:
println("Other Problem")
}
}


func beginContactSearch(){
let people = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray as [ABRecord]

for person in people {
// Name
let name = ABRecordCopyCompositeName(person).takeRetainedValue()

// Phones
let phones: ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
names = Array()
for (var i = 0; i < ABMultiValueGetCount(phones); i++) {
let phones: String = ABMultiValueCopyValueAtIndex(phones, i).takeRetainedValue() as String
var friendsquery = PFQuery(className:"_Users")
friendsquery.whereKey("phoneNumber" , equalTo:phones)
friendsquery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil{
// if let objects = objects as? [String] {
for object in objects {
var phoneslist = object as NSString
self.names!.append(phoneslist)

}
//}
}
}
}
}
self.namesTableView.reloadData()
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.names?.count ?? 0
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = namesTableView.dequeueReusableCellWithIdentifier("Tablecell") as UITableViewCell

cell.textLabel!.text = names![indexPath.row]
cell.textLabel?.textColor = UIColor.whiteColor()

return cell
}


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
}

最佳答案

抱歉,我需要猜测错误是什么,因为如果没有项目就很难找到它......:-)

尝试将文件中的代码与此行下的代码交换

friendsquery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil{
for object in objects! {
if let phoneslist: NSString = object as? NSString {
self.names!.append(phoneslist)
}
}
}
}

更新

好吧,我的第一个猜测是正确的:-)所以让我尝试另一个......

在此代码中:

if let phoneslist: NSString = object as? NSString {
self.names!.append(phoneslist)
}

你尝试将对象转换为 NSString...好吧,我不知道 Parse,也不知道它们的对象是如何构建的,但你需要做这样的事情...

if let phoneslist: PFObject = object as? PFObject {
if let nameFromList: NSString = phoneslist["name"] as? NSString {
self.names!.append(nameFromList)
}
}

我猜 PFObject 是一个包含多个值的对象...所以你还必须通过它的键来定义你想要的值...

所以你需要 NSLog 对象来获取它的键,然后将代码更改为我上面的新代码就完成了

关于ios - 在 iOS swift 中查询使用我的应用程序的用户(解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com