gpt4 book ai didi

ios - 无法使用类型为 'findObjectsInBackgroundWithBlock' 的参数列表调用 '(([AnyObject]!, NSError!) -> Void)'

转载 作者:行者123 更新时间:2023-11-28 09:28:31 24 4
gpt4 key购买 nike

我正在关注 Youtube 上名为 How to Build a Simple iOS Chat App 的教程,该教程由名为 Code With Chris 的 channel 制作。我按照他的所有类型进行操作,但在 Xcode 中出现以下错误:

/Users/David/Documents/360Drive/Xcode/Try/Learn With Chris/ChatApp/ChatApp/ChatApp/ViewController.swift:53:15: Cannot invoke 'findObjectsInBackgroundWithBlock' with an argument list of type '(([AnyObject]!, NSError!) -> Void)'

这是我的代码:

//
// ViewController.swift
// ChatApp
//
// Created by David Chen on 15/4/12.
// Copyright (c) 2015 cwsoft. All rights reserved.
//

import UIKit
import Parse

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {

var messagesArray:[String] = [String]()

@IBOutlet weak var MessageTableView: UITableView!
@IBOutlet weak var ButtonSend: UIButton!
@IBOutlet weak var DockViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var MessageTextField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
//Set delegate
self.MessageTableView.delegate = self
self.MessageTableView.dataSource = self
self.MessageTextField.delegate = self

let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tableViewTapped")
self.MessageTableView.addGestureRecognizer(tapGesture)

self.messagesArray.append("Test 1")
self.messagesArray.append("Test 2")
self.messagesArray.append("Test 3")
}

@IBAction func ButtonSendPressed(sender: UIButton) {
self.MessageTextField.endEditing(true)

var newMessageObject:PFObject = PFObject(className: "Message")
newMessageObject["Text"] = self.MessageTextField.text
newMessageObject.saveInBackgroundWithBlock {
(success: Bool, error: NSError?) -> Void in
if (success == true) {
NSLog("Success")
} else {
NSLog("Error")
}
}
}

func retrieveMessages() {
var query:PFQuery = PFQuery(className: "Messages")
query.findObjectsInBackgroundWithBlock {
(object: [AnyObject]!, error: NSError!) -> Void in
self.messagesArray = [String]()
for messageObject in objects {
let messageText:String? = (messageObject as PFObject)["Text"] as? String
if messagetext != nil {
self.messagesArray.append(messageText!)
}
}
}
self.MessageTableView.reloadData()
}

func tableViewTapped() {
self.MessageTextField.endEditing(true)
}

//MARK : TextField Delegage Methods

func textFieldDidBeginEditing(textField: UITextField) {
self.view.layoutIfNeeded()
UIView.animateWithDuration(0.5, animations: {
self.DockViewHeightConstraint.constant = 320
self.view.layoutIfNeeded()
}, completion: nil)
}

func textFieldDidEndEditing(textField: UITextField) {
self.view.layoutIfNeeded()
UIView.animateWithDuration(0.5, animations: {
self.DockViewHeightConstraint.constant = 60
self.view.layoutIfNeeded()
}, completion: nil)
}

//MARK : Table View Delegate Methods

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.MessageTableView.dequeueReusableCellWithIdentifier("MessageCell") as! UITableViewCell
cell.textLabel?.text = self.messagesArray[indexPath.row]
return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messagesArray.count
}
}

这是教程的链接 link

感谢任何有用的建议:)

最佳答案

上次 xCode 更新有很多变化。我无法真正解释为什么需要进行一些更改。您最好阅读更改日志!我以后也会这样:)同时试试这个:

func retrieveMessages() {
var query:PFQuery = PFQuery(className: "Messages")
query.findObjectsInBackgroundWithBlock {
(object, error) -> Void in
self.messagesArray = [String]()
for messageObject in object! {
let messageText:String? = (messageObject as! PFObject)["Text"] as? String
if messageText != nil {
self.messagesArray.append(messageText!)
}
}
}
self.MessageTableView.reloadData()
}

似乎在某些情况下你不需要再指定类型了。在其他情况下,您需要这样做。在这种情况下,没有必要,但您需要解包对象数组。

关于ios - 无法使用类型为 'findObjectsInBackgroundWithBlock' 的参数列表调用 '(([AnyObject]!, NSError!) -> Void)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29648867/

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