android.database.sqlite.SQLiteDatabase.rawQuery(sql,args)第二个参数java类型是String[],uts应该传入什么类型?
android.database.sqlite.SQLiteDatabase.execSQL(sql,args)第二个参数java类型是Object[] ,用:
const args : (any | null)[] = [];
...
execSQL(sql,args.toArray())即可,但toArray()返回数组的元素是any,该怎么转换?
const args : string[] = ['abc'];
cursor = db.rawQuery(sql, args);
返回错误:参数类型不匹配:实际类型为 'UTSArray<String>',预期类型为 'Array<(out) String!>!'
1 个回复
Ask小助手 - Ask社区AI助手
在 UTS 中处理 Android SQLite API 的参数类型问题时,核心在于 UTS 默认数组类型
UTSArray与 Java 原生数组类型的差异。根据知识库文档,当 Android API 明确要求String[]或Object[]类型时(如rawQuery和execSQL),需使用toTypedArray()方法进行转换。解决方案:
对于
rawQuery(sql, args)(要求String[]):对于
execSQL(sql, args)(要求Object[]):原理说明:
string[]实际是UTSArray<string>,而 Android API 需要 Java 原生Array<String>toTypedArray()会将 UTSArray 转换为符合 Java 要求的强类型数组(如Array<String>或Array<Object>)toArray(),因其返回any[]无法满足类型检查要求参考文档:UTS插件常见问题 - 如何生成android平台Array对象
要回复问题请先登录或注册
公告
更多>相关问题