空 NSArray 的后端服务超出范围

Backendless service beyond bounds for empty 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 0x10017d650 0x180cca8b8) libc++abi.dylib:以 NSException

类型的未捕获异常终止

这是什么原因?

异常是因为在 persistenceService 的 of:find:response 方法内部,代码试图获取空数组的索引 3。给定您的代码的最可能原因是该代码存在包含意外参数的错误。

编辑:根据您的评论,您可能 运行 在配置 backendless 之前使用此代码。 application: didFinishLaunchingWithOptions: 可能太早了。

原始答案:

  1. 删除 query.whereClause = [NSString stringWithFormat:@"UniversityName LIKE \'%%%@%%\' ", partialName]; 行。那它行得通吗?如果是这样,那么您的 where 子句可能不是预期的(UniversityName 是正确的字段名称吗?backendless 支持 Like 吗?如果是这样,这是正确的语法吗?)

  2. 如果没有 whereClause 仍然无法工作 -- backendless 知道你的 University class 吗?

如果这没有帮助,最好向 backendless 寻求帮助。

原因是我没有初始化Backendless..

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

这是对我复制过去的惩罚...谢谢大家!