Question or problem in the Swift programming language:
I want to append two NSData:
var actionIdData :NSData = NSData(bytes: &actionId, length: 2) var payLoad : NSData = NSData(bytes: &message, length: 9) var messageData : NSMutableData! messageData.appendData(actionIdData) messageData.appendData(actionIdData)
How to solve the problem:
Solution 1:
You need to initialize your messageData
before appending to it.
var messageData = NSMutableData() //or var messageData : NSMutableData = NSMutableData() messageData.appendData(actionIdData) messageData.appendData(payLoad)
Solution 2:
Compatible with both Swift 4 and Swift 5 you can only use append
function of Data
to append two different data.
Sample Usage
guard var data1 = "data1".data(using: .utf8), let data2 = "data2".data(using: .utf8) else { return } data1.append(data2) // data1 is now combination of data1 and data2
Solution 3:
Convenient extension for Swift 5
extension Array where Element == Data { /** * Combines data * ## Examples: * [Data(),Data()].combined */ var combined: Data { reduce(.init(), +) } }