UnimplementedFeatureError: Verschachtelte dynamische Arrays sind hier nicht implementiert – bytes[]

Ich habe eine Solidity-Datei erstellt, die alle Details in der Blockchain (Ganachi-Desktop-Anwendung) speichert. Details wurden mit „ id “ zugeordnet, was eine alphanumerische Zahl ist (z. B.: US644563496). Jetzt muss ich alle „ID“ aus der Blockchain anzeigen. Aber während der Kompilierung erhalte ich den Fehler ' UnimplementedFeatureError: Nested dynamic arrays not installed here .'

pragma solidity ^0.4.4;

contract Register{

 struct Details{
    bytes id;
    string name;
    string age;
   string country;
 }
 mapping (bytes => Details) DetailsTable;

bytes[] uid;

 function saveBondToBC(bytes id,string name,string age,string country) payable returns(bool success){

DetailsTable[id].id = id;
DetailsTable[id].name = name;
DetailsTable[id].age = age;
DetailsTable[id].country = country;
return true;

}


function insertID(bytes id) payable returns(bool success){

uid.push(id);
return true;

}

function getAllID() public returns(bytes[]){

    return uid;

}

}

Als ich die Funktion getAllID() entfernte , wurde sie kompiliert und 'id' wurde in das Array geschoben. Wie rufe ich alle Daten von byte[] uid ab?

Antworten (1)

UnimplementedFeatureError: Verschachtelte dynamische Arrays sind hier nicht implementiert

Dieser Fehler sagt Ihnen, dass Solidity nicht mit dynamischen 2D-Arrays umgehen kann. Die Funktion wurde noch nicht implementiert.

Details wurden mit „id“ zugeordnet, was eine alphanumerische Zahl ist (z. B.: US644563496)

Wenn Sie bereits wissen, wie viele Zeichen Ihre IDs haben werden oder wie ihre maximale Länge sein wird, können Sie die Länge des Bytes-Objekts definieren. Siehe auch die Dokumentation .

Eine Problemumgehung für Sie könnte daher darin bestehen, einfach zum Beispiel bytesdurch zu ersetzen. bytes32Wenn ich dies in Remix teste , wird kein Fehler ausgegeben.

Hoffe es hilft.

Danke, als ich den Datentyp in bytes32 geändert habe. Es hat funktioniert!