2016-03-05 62 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