如何使用swift语言修改和反转NSData中的每一位?

时间:2016-08-21 08:08:47

标签: swift nsdata

如何使用swift语言修改和反转NSData中的每一位?我想做一些像代码混淆的事情。

//Empty Photo Array
$scope.AllPhotosOfAlbumArray = [];
// Get All Photos Of Album
$scope.getAlbumPhotos = function (albumId) {
    console.log(albumId);
    logicOfMyApp.getAllPhotosOfALmubFromSrverFunc(albumId).then(function (photos) {
        $scope.AllPhotosOfAlbumArray = photos;
        console.log($scope.AllPhotosOfAlbumArray);
    });
};

然后..请告诉我如何修改NSData中的数据?给我一些编码的暗示。感谢

1 个答案:

答案 0 :(得分:1)

NSData是一种不可变类型,因此您无法修改其内容。

两种选择。

(1)创建一个包含修改内容的新NSData

let tempstring = "hello world!"
let encoding = NSUTF8StringEncoding
let tempnsdata = tempstring.dataUsingEncoding(encoding)!
var tempbytes: [UInt8] = Array(count: tempnsdata.length, repeatedValue: 0)
tempnsdata.getBytes(&tempbytes, length: tempbytes.count)
for i in tempbytes.indices {
    tempbytes[i] = ~tempbytes[i]
}
let modifiednsdata = NSData(bytes: tempbytes, length: tempbytes.count)
//Use `modifiednsdata`...

(2)创建一个可变副本并修改其中的内容。

let tempstring = "hello world!"
let encoding = NSUTF8StringEncoding
let tempnsdata = tempstring.dataUsingEncoding(encoding)!
let tempnsmutabledata = tempnsdata.mutableCopy() as! NSMutableData
let mutabledataptr = UnsafeMutablePointer<UInt8>(tempnsmutabledata.mutableBytes)
for i in 0..<tempnsmutabledata.length {
    mutabledataptr[i] = ~mutabledataptr[i]
}
//Use `tempnsmutabledata` as `NSData`