Accessing 64-bit integer properties from QML

Some properties in the Runtime platform are 64-bit integer types. The QML language does not have a 64-bit integer type, but we provide ways to work with these properties in the QML API. There are trade-offs with the properties so it's important to understand the options.

The QML API provides the properties as strings. To focus on one property in particular, let's look at FeatureTable.numberOfFeatures. In the C++ API, this is a qint64 value while in the QML API it's a string property. The QML API also offers FeatureTable.numberOfFeaturesAsInt which is represented as a numeric int type. This pattern is used consistently in the QML API.

The string representations of properties can lead to misleading results when used directly in numerical comparisons. For example, the following code may behave in a way you do not expect. Even if numberOfFeatures is "0", the comparison will fail since it's a string.

// problematic code
if (myFeatureTable.numberOfFeatures === 0)

You can use this alternative syntax to avoid this issue.

// safer code
if (Number(myFeatureTable.numberOfFeatures) === 0)
// or
if (myFeatureTable.numberOfFeatures == 0)

You can also use the "AsInt" property:

if (myFeatureTable.numberOfFeaturesAsInt === 0)

The downside of accessing the property as an integer is potential truncation. If the numberOfFeatures property is sufficiently large then numberOfFeaturesAsInt could be truncated, returning the wrong value. In the event of a truncation the errorChanged signal will emit.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.