2017-02-27 3 views
-1

Ich habe eine Int, die ich auf einen Zeiger vom Typ kopieren möchten UnsafeMutablePointer<Int32>?Kopieren Int UnsafeMutablePointer

Ich habe versucht, es zu Daten zu werfen und kopieren Sie sie dann, aber die Kopierfunktion param ist vom Typ UnsafeMutablePointer<UInt8>

Dies ist, was ich habe versucht:

var sizePointer: UnsafeMutablePointer<Int32>? 
var numOfBytes = 100 
var sizeData = Data(bytes: &(numOfBytes), count: MemoryLayout<Int>.size) 
//What's now? How to copy it to the pointer? 
//sizeData.copyBytes(to: size, count: MemoryLayout<Int>.size) not working 

Edit:

ich habe die folgende Funktion, die einen Zeiger bekommt. Ich muss den Int an diese Adresse kopieren.

func f(pointer: UnsafeMutablePointer<Int32>?) { 
    var numOfBytes = 100 
    //copy numOfBytes to the pointer's address 
} 
+0

ich die Frage – Roee84

Antwort

1

Wenn Sie nur eine Funktion aufzurufen versuchen, die UnsafeMutablePointer<Int32> ein Argument vom Typ erwartet, dann ist es so einfach wie diese:

func f(_ i: UnsafeMutablePointer<Int32>) { 
    print(i.pointee) 
} 

var x = Int32() 
f(&x) 
+0

In diesem Beispiel bearbeitet können sagen, ich will x an die Adresse kopieren, auf die i zeigt (wobei i bereits irgendwo anders mallociert ist). – Roee84

+0

Also das Äquivalent des C-Codes '* i = x;'? In Swift wäre das "i.poittee = x". – Alexander

+0

Ja, aber ich möchte, dass der Wert kopiert wird (da er an einer lokalen Funktion definiert ist). – Roee84

Verwandte Themen