Ich habe ein Problem mit dem folgenden SmartContract.
Ich habe eine Struktur definiert, die ein String-Array enthält. Und ich habe eine Zuordnung für diese Struktur definiert.
struct Stonedetails {
uint stoneweight;
string stoneimagehash;
string stoneidbywholesaledealer;
string[] stoneidsbycutter;
}
mapping (uint=>Stonedetails) public stonedetailsTable;
Ich habe die Werte in struct mit den folgenden Methoden in einer Funktion gespeichert, indem ich Parameter übergeben habe.
stonedetailsTable[stoneid].stoneweight =stoneweight;
stonedetailsTable[stoneid].stoneimagehash =stoneimagehash;
stonedetailsTable[stoneid].stoneidbywholesaledealer =stoneidbywholesaledealer;
Wie kann ich die Werte in einem String-Array speichern? Ist es der Weg, die Werte einzeln zu speichern?
stonedetailsTable[stoneid1].stoneidsbycutter.push(stoneidbycuttervalue);
Wie kann ich die Länge des Arrays mit stoneidsbycutter.length finden?
Dein Code sieht korrekt aus. Ich habe Folgendes getestet und wie erwartet eine Länge von 1 erhalten:
pragma solidity ^0.4.17;
contract Test {
struct Stonedetails {
uint stoneweight;
string stoneimagehash;
string stoneidbywholesaledealer;
string[] stoneidsbycutter;
}
mapping (uint=>Stonedetails) public stonedetailsTable;
function Test() public {
stonedetailsTable[0].stoneidsbycutter.push("hello");
}
function getLength() public constant returns (uint256) {
return stonedetailsTable[0].stoneidsbycutter.length; // returns 1
}
}
Benutzer19510
stonedetailsTable[stoneid].stoneidsbycutter.length
nicht?Crissi Mariam Robert
Benutzer19510
push
gefolgt von einem Häkchen beilength
.)