Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save blakemerryman/8295f883d20fa91fbce2 to your computer and use it in GitHub Desktop.
Save blakemerryman/8295f883d20fa91fbce2 to your computer and use it in GitHub Desktop.

Revisions

  1. blakemerryman renamed this gist Oct 12, 2014. 1 changed file with 0 additions and 0 deletions.
  2. blakemerryman created this gist Oct 12, 2014.
    24 changes: 24 additions & 0 deletions NSMutableData.insertBytes()
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    public extension NSMutableData {

    func insertBytes(bytes: UnsafePointer<Void>, withLength length: Int, atIndex index: Int) -> NSMutableData {

    if index > self.length {
    return NSMutableData()
    }

    var data = self // Holds self for modification

    let lowerRange = NSMakeRange(0, index)
    let upperRange = NSMakeRange(index, data.length-index)

    let lowerHalfOfData = data.subdataWithRange(lowerRange)
    let upperHalfOfData = data.subdataWithRange(upperRange)

    data = NSMutableData()
    data.appendData(lowerHalfOfData)
    data.appendBytes(bytes, length: length)
    data.appendData(upperHalfOfData)

    return data
    }
    }