外部函数中参数的数据位置必须是 "calldata",但给出了 none

Data location must be "calldata" for parameter in external function, but none was given

对于用 Solidity 编写的函数,我在 Remix 中遇到以下错误。

我认为这是因为智能合约是用低于 solidity ^0.5.0 的 solidity 版本编写的,现在更新的编译器有不同的要求。

我确信更正很容易,但我是 solidity 的新手,似乎无法解决它。任何帮助将不胜感激!

外部函数是;

 function TransferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes _data
  )
    external;

错误是:

Data location must be "calldata" for parameter in external function, 
but none was given.
bytes _data
^----------^

您需要将 bytes _data 标记为 calldata

function TransferFrom(
address _from,
address _to,
uint256 _tokenId,
bytes calldata _data
) external;