I'm not sure if this is the right place to report an issue with Roku OS but I think I've found an issue with hasField function on Roku OS 8
https://sdkdocs.roku.com/display/sdkdoc/ifSGNodeField#ifSGNodeField-hasField(fieldNameasString)asBoo....
This function returns true for field name "
channeltype" even if this field is not added and set yet.
Please see my code below:
contentNode = CreateObject("roSGNode","ContentNode")
if contentNode.hasField("channeltype") = true
print "SET FIELD channeltype"
contentNode.setField("channeltype", "test1")
else
print "ADD AND SET channeltype"
contentNode.addField("channeltype", "string", false)
contentNode.setField("channeltype", "test1")
end if
? contentNode
Result:SET FIELD channeltype<Component: roSGNode> ={ change: <Component: roAssociativeArray> focusable: false focusedChild: <Component: roInvalid> id: "" CHANNELTYPE: invalid}If I run the code from above for other field name (channeltype1) the code works. Please see below:
contentNode = CreateObject("roSGNode","ContentNode")
if contentNode.hasField("channeltype1") = true
print "SET FIELD channeltype1"
contentNode.setField("channeltype1", "test1")
else
print "ADD AND SET channeltype1"
contentNode.addField("channeltype1", "string", false)
contentNode.setField("channeltype1", "test1")
end if
? contentNode
Result:ADD AND SET channeltype1
<Component: roSGNode> ={ change: <Component: roAssociativeArray> focusable: false focusedChild: <Component: roInvalid> id: "" channeltype1: "test1"}If I run addField and setField for "channeltype" field name the value is set properly.
Please see below:
contentNode = CreateObject("roSGNode","ContentNode")
print "ADD AND SET channeltype"
contentNode.addField("channeltype", "string", false)
contentNode.setField("channeltype", "test1")
? contentNode
Result:ADD AND SET channeltype
<Component: roSGNode> ={ change: <Component: roAssociativeArray> focusable: false focusedChild: <Component: roInvalid> id: "" channeltype: "test1"}