2016-03-05 63 views
2

這是我的代碼Backendless服務超越界限空的NSArray

BackendlessDataQuery *query = [BackendlessDataQuery query]; 
query.whereClause = [NSString stringWithFormat:@"UniversityName LIKE \'%%%@%%\' ", partialName]; 
[[backendless.persistenceService of:[University class]] find:query response:^(BackendlessCollection *coll) { 

    }); 
} error:nil]; 

當第三線運行,收到錯誤

*終止應用程序由於未捕獲的異常「NSRangeException」,原因是:「* - [__ NSArray0 objectAtIndex:]:索引3超出界限爲空的NSArray」 ***第一擲調用堆棧: (0x181245900 0x1808b3f80 0x1811c1478 0x10034d250 0x100318f24 0x1000ea9b0 0x101859bf0 0x101859bb0 0x10185f658 0x1811fcbb0 0x1811faa18 0x181129680 0x182638088 0x185fa0d90 0x1001 7d650 0x180cca8b8) libC++ abi.dylib:以NSException類型的未捕獲異常終止

是什麼原因?

+0

你需要給出更多的代碼,這是不可能的瞭解你在那裏給出了什麼 – jakedunc

+0

我在應用程序中運行此代碼:didFinishLaunchingWithOptions:在第一行,所以之前不存在代碼行 – magorik

+1

也許現在運行代碼還爲時過早。後端是否需要先配置? –

回答

1

的原因是,我沒有初始化的Backendless ..

[backendless initApp:APP_ID secret:SECRET_KEY version:VERSION_NUM]; 

它給我的懲罰拷貝過去......謝謝大家!

0

這是一個例外,因爲在persistenceService的of:find:response方法中,代碼嘗試獲取空數組的索引3。給出您的代碼最可能的原因是該代碼有一個意外參數的錯誤。

編輯:根據您的評論,您可能會在配置backendless之前運行此代碼。 application: didFinishLaunchingWithOptions:可能爲時過早。

原來的答案:

  1. 卸下query.whereClause = [NSString stringWithFormat:@"UniversityName LIKE \'%%%@%%\' ", partialName];線。那它有用嗎?如果是這樣,那麼你的where子句可能是不被期望的(是UniversityName的正確的字段名稱嗎?是否支持後端?如果是,是否它的語法正確?)

  2. 如果它仍然不起作用whereClause - 後背知道你的University課程?

如果這沒有幫助,最好向後端尋求幫助。

+0

我不知道後端api,但這是表達解析錯誤或使用無效*列*(或任何它們)的有趣方式。 – trojanfoe

+0

這可能只是後臺的一個錯誤---我們都在那裏。 –

+0

有可能是一個錯誤。但在新項目中一切正常。 。我已經要求Backendless的幫助,但他們保持沉默 – magorik