“使用未声明的标识符错误”

时间:2016-04-08 05:31:00

标签: swift

我正在按照教程制作聊天应用程序,除了同一行中的这两个错误外,一切都很好看。它可能与其他ViewControllers或文件有关,所以请告诉我。

这是代码。

import UIKit

class SocketIOManager: NSObject {
static let sharedInstance = SocketIOManager()

var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "http://192.168.1.197")!)


override init() {
    super.init()
}


func establishConnection() {
    socket.connect()
}


func closeConnection() {
    socket.disconnect()
}


func connectToServerWithNickname(nickname: String, completionHandler: (userList: [[String: AnyObject]]!) -> Void) {
    socket.emit("connectUser", nickname)

    socket.on("userList") { ( dataArray, ack) -> Void in
        completionHandler(userList: dataArray[0] as! [[String: AnyObject]])
    }

    listenForOtherMessages()
}


func exitChatWithNickname(nickname: String, completionHandler: () -> Void) {
    socket.emit("exitUser", nickname)
    completionHandler()
}


func sendMessage(message: String, withNickname nickname: String) {
    socket.emit("chatMessage", nickname, message)
}


func getChatMessage(completionHandler: (messageInfo: [String: AnyObject]) -> Void) {
    socket.on("newChatMessage") { (dataArray, socketAck) -> Void in
        var messageDictionary = [String: AnyObject]()
        messageDictionary["nickname"] = dataArray[0] as! String
        messageDictionary["message"] = dataArray[1] as! String
        messageDictionary["date"] = dataArray[2] as! String

        completionHandler(messageInfo: messageDictionary)
    }
}


private func listenForOtherMessages() {
    socket.on("userConnectUpdate") { (dataArray, socketAck) -> Void in
        NSNotificationCenter.defaultCenter().postNotificationName("userWasConnectedNotification", object: dataArray[0] as! [String: AnyObject])
    }

    socket.on("userExitUpdate") { (dataArray, socketAck) -> Void in
        NSNotificationCenter.defaultCenter().postNotificationName("userWasDisconnectedNotification", object: dataArray[0] as! String)
    }

    socket.on("userTypingUpdate") { (dataArray, socketAck) -> Void in
        NSNotificationCenter.defaultCenter().postNotificationName("userTypingNotification", object: dataArray[0] as? [String: AnyObject])
    }
}


func sendStartTypingMessage(nickname: String) {
    socket.emit("startType", nickname)
}


func sendStopTypingMessage(nickname: String) {
    socket.emit("stopType", nickname)
}
}

有错误的行是,

var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "http://192.168.1.197")!)

感谢。

3 个答案:

答案 0 :(得分:1)

检查socket.io-client swift master的Source文件夹是否包含所有文件,如果不是,您可以再次从https://github.com/socketio/socket.io-client-swift下载并复制应用程序中的源文件夹

答案 1 :(得分:0)

转到SocketIOClient文件,打开Xcode右侧的文件检查器,查看SocketIOClient是否属于您的应用目标。该错误可能是由此造成的。

答案 2 :(得分:0)

添加import SocketIO以修复"使用未声明的类型SocketIOClient"错误