简单地理解问题,希望能为同样简单的解决方案:搜索功能投掷的错误#1009 - 空对象引用
当我在搜索查询中输入,我有时会收到“错误#1009无法访问的属性或方法在dataField = new ArrayCollection(result.data);
行上的“空对象引用”。
AS3:
private function getSearch():void
{
//status = "Loading data";
selectStmt = new SQLStatement();
selectStmt.sqlConnection = conn;
var sql:String = "SELECT [Index], Title, CAST(Picture AS ByteArray) AS Picture FROM Data WHERE Title LIKE @searchTarget";
selectStmt.parameters["@searchTarget"] = "%" + searchTarget + "%";
selectStmt.text = sql;
selectStmt.addEventListener(SQLEvent.RESULT, selectResult2);
selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError);
selectStmt.execute();
targetRecordId = pngIndex;
}
private function selectResult2(event:SQLEvent):void
{
//status = "Data loaded";
selectStmt.removeEventListener(SQLEvent.RESULT, selectResult);
selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError);
var result:SQLResult = selectStmt.getResult();
dataField = new ArrayCollection(result.data);
if (result.data != null) {
pngIndex = result.data.Index;
pngTitle = result.data.Title;
pngByteArray = result.data.Picture;
targetRecordId = pngIndex;
}
}
MXML:
<s:List id="myList"
x="0" y="40"
width="100%" height="100%"
labelField="Title"
dataProvider="{dataField}"
change="myList_changeHandler(event)"
>
</s:List>
事情我已经尝试过(包括这些解决方案的排列):
1)移动的错误代码SelectResult2方法中
2)添加if (result.data == null)
方法
3)使用数组,而不是ArrayCollection的(我发现有人谁发现这个地方工作了他们的项目在一些论坛)
4)添加定时器功能,试图限制多久分贝就会得到搜索。 (虽然我认为这是最好的解决办法,我想我会再次尝试这个)
注,发生了错误,从我可以告诉,这主要是由于输入搜索字符的结果太快
谢谢你的帮助。
感谢您的信息 - 很高兴知道正确的解决方案。 – SQLiteNoob