2016-01-29 85 views
2

我正在構建一個服務器端將一個JSON數組傳遞給客戶端的套接字方法。有沒有辦法從Swift中的socket.io方法返回一些東西?

之後,我想傳遞數據以使用其他函數。

但是在斯威夫特socket方法限制了我這樣做,因爲它是一個void函數

這是 code

沒有任何東西可以從封閉{}遁法的例子,它看起來像我只能在套接字方法內執行操作

是否有任何解決方法,我可以操縱套接字方法以便從該範圍中獲取數據?

回答

1

我不知道具體有關socket.io但如果它的異步操作的典型情況下,你可以換你socket.io調用一個新的完成處理程序,例如:

// I suppose the data is of type NSData. 
func readDataFromSocketIO(completion: (data: NSData) ->()) { 
    socket.on("connect") { data, ack in 
     // ... 
     completion(data: data) 
    } 
} 

你用後封稱之爲:

readDataFromSocketIO() { data in 
    // use `data` here 
} 

如果你想填充一個屬性:

var dataFromSIO: NSData? { 
    didSet { 
     print("We got new data!") 
    } 
} 

func populate() { 
    readDataFromSocketIO() { data in 
     self.dataFromSIO = data 
    } 
} 

當然,這些只是一些簡單的例子,有很多方法可以做到這一點,你必須適應你自己的類和方法。

另外,請注意,我不是一個socket.io用戶,我沒有在Xcode中測試我的代碼示例,但是如果我對此問題的診斷是正確的,它們應該是正確的。

相關問題