Swift Erreur: Ne peut pas passer à valeur immuable inout argument: "pChData' est un 'laisser' constante
J'ai une fonction qui ressemble à ce qui suit:
func receivedData(pChData: UInt8, andLength len: CInt) {
var receivedData: Byte = Byte()
var receivedDataLength: CInt = 0
memcpy(&receivedData, &pChData, Int(len)); //Getting the error here
receivedDataLength = len
AudioHandler.sharedInstance.receiverAudio(&receivedData, WithLen: receivedDataLength)
}
L'obtention de l'erreur:
Ne peut pas passer à valeur immuable inout argument: "pChData' est un 'laisser' constante
Bien qu'aucun des arguments que je suis de passage ici sont let
constantes. Pourquoi suis-je cela?
- Où est memcpy() la fonction?
- Votre fonction doit être capable de muter pChData à l'intérieur et à l'extérieur de son champ d'application? Ou seulement à l'intérieur? Il n'est pas clair à partir de votre question. Attention à ne pas utiliser inout si vous avez uniquement besoin de la valeur d'une variable à l'intérieur.
memcpy()´ is a function defined in
Darwin.C.string". Une de ses utilisations est la modification d'une MTLBuffer.
Vous devez vous connecter pour publier un commentaire.
Vous tentez d'accéder/modifier
pChData
argument, que vous ne pouvez pas, à moins ou jusqu'à ce que vous déclarez commeinout
paramètre. En savoir plus surinout
paramètre ici. Donc, essayez avec le code suivant.Arguments passés à une fonction sont immuables à l'intérieur de la fonction par défaut.
Vous avez besoin de faire une variable copie (Swift 3 compatible):
ou, avec la Swift 2, vous pouvez ajouter
var
à l'argument:Troisième option, mais ce n'est pas ce que vous demandez: faire de l'argument d'un inout. Mais il sera également muter pchData à l'extérieur de la touche func, il semble que vous ne voulez pas de cela ici - ce n'est pas dans votre question (mais j'aurais pu lire que de mal, bien sûr).