How to append two NSData variable in swift?

i0S Swift Issue

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(), +)
   }
}