- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中使用 Parse 数据填充表格 View ,然后允许我的用户使用搜索字段筛选该数据。长话短说,它工作正常,只是我收到一个 A long-running operation is being executed on the main thread
错误。我知道它在这一行 NSArray *results = [query findObjects];
所以我想我会运行一个 findObjectsInBackgroundWithBlock
来尝试修复它。很好,但现在 tableview 总是空的。我不应该担心这个警告吗?如果应该的话,代码有什么问题?谢谢!
搜索有效但收到警告:
-(void)filterResults:(NSString *)searchTerm {
[self.searchResults removeAllObjects];
PFQuery *query = [PFQuery queryWithClassName:@"NHLVideos"];
[query whereKey:@"User" containsString:searchTerm];
NSArray *results = [query findObjects];
[self.searchResults addObjectsFromArray:results];
}
没有警告但没有搜索结果:
-(void)filterResults:(NSString *)searchTerm {
[self.searchResults removeAllObjects];
PFQuery *query = [PFQuery queryWithClassName:@"NHLVideos"];
[query whereKey:@"User" containsString:searchTerm];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error){
//No Error
[self.searchResults addObjectsFromArray:objects];
} else {
NSLog(@"Error %@", error);
}
}];
}
再次感谢!
最佳答案
在第一种情况下,查询在主线程上运行,因此程序会等到查询返回后再继续。这不太理想,因为您的应用程序可能会暂停不确定的时间,直到查询返回 - 因此会出现警告消息。
第二种情况是首选,因为查询在另一个线程的后台运行。关于您丢失的结果,也许查询正在返回结果,但是您正在查询完成运行之前检查主线程。同样,您永远无法确定查询运行需要多长时间。在将 objects
添加到 self.searchResults
后,需要在 block 内重新加载该表。换句话说,在未来的某个时刻,查询将完成,然后运行该 block 。您将结果添加到 self.searchResults
,但 tableView 不会立即重新加载,并且您不会显示,尽管它们已被查询检索到。
附带说明,在 block 中,您不应该引用 self。对象对 block 有强引用,现在 block 对对象有强引用——即保留周期/内存泄漏。要更正此添加:
__weak MyObject *weakSelf = self;
在 block 之前并使用 weakSelf
代替。
关于ios - 解析 filterResults findObjects 与 findObjectsInBackgroundWithBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30691146/
我正在运行一个 Parse 程序,该程序获取数据并使用“findObjectsInBackgroundWithBlock”从中创建对象。完成后,我更新 self ,然后调用“[self.tableVi
我正在尝试使用 uisearchbar 并执行“findObjectsInBackgroundWithBlock”在 parse.com 上搜索我的对象。我在我的输出中得到了正确的结果,但它们没有出现
我的请求总是返回nil var query : PFQuery = PFUser.query()! query.whereKey("username", equalTo: sea
我当前的问题是我的 -findObjectsInBackgroundWithBlock 方法对于成功的查询返回 nil 。 我的自定义类是一个 JSON,它是使用 {results: [{}]} 语法
let userQuery = PFUser.query() userQuery!.whereKey("username", equalTo: userUsername) userQuery!.fin
编辑:我更改了问题标题。我将函数更改为 findObjectsInBackgroundWithBlock - override func viewDidAppear(animated: Bool) {
我的代码如下所示,我不明白的是为什么Void in之后的代码永远不会运行?我确实尝试过调试,但似乎 Block 永远不会被执行。 顺便说一句,查询将返回空。 let query = PFQuery(c
这是我的 ViewDidLoad 中的代码 我正在尝试在我拥有未执行的 NSLog 的代码部分执行某些操作。我没能找到有同样问题的人? 我哪里错了?提前致谢! PFRelation *relation
我直接从文档中复制了 PFQuery 的示例,将我的字段和类名称放入其中,但它从未命中 completionBlock。 - (void) loadMyWindows { PFQuery *q
我正在尝试将查询结果传递到变量数组 var petitions = [PFObject] = [] 然后返回结果。我如何在 Swift 中做到这一点? func getPetitions(employ
所以我在让所有用户从解析到我的应用程序时遇到了这个错误: Cannot invoke 'findObjectsInBackgroundWithBlock' with an argument list
在我的解析表中有列。位置和国家。如果是真的,数据将加载到应用程序中。但问题是,它永远不会参与findObjectsInBackgroundWithBlock连wherekeys都错了。总是打印出 Th
我正在尝试使用这段代码获取一堆行 var query = PFQuery(className:"Test") query.findObjectsInBackgroundWithBlock {
我正在使用 Parse 从数据库中获取数据。当 block - findObjectsInBackgroundWithBlock 被调用时,一个数组被传递。由于我只收到一行数据,因此它们都出现在数组的
我是 ios 开发的新手,我最近发现了一个使用解析后端构建像 ios 应用程序这样的高音扬声器的教程。我当前的设置是带有 swift 2.0 的 Xcode 7.1,本教程是在旧版本的 swift 上
我这里有一个带有 parse.com 代码的 swift 2 问题是代码在//1 之前打印//2这造成了一个问题,我无法在其他方法或其他地方使用该数组这是代码 var myStudent:Stude
我有一个函数,如下所示,它应该从我的解析数据库中检索所有“Food”对象。然而,虽然实际数据库当前有 249 个对象,但该 block 仅检索 100 个对象。 - (void) addFoodsTo
我的代码中有这样的结构: for (METMeetingEntity *e in self.meetingList) { PFQuery *query = [PFUser qu
我正在使用 parse.com 和 Swift 2。 我需要在 for 循环中从解析中找到对象。问题是,findObjectsInBackgroundWithBlock 是异步的,所以当 query.
我正在尝试开发 iOS9.1 的操作扩展,该扩展应该查询 Parse 以获得一些数据。 我已在扩展中添加、启用并测试了 Parse,并且成功创建了测试对象并检查当前用户。 我无法获取 Parse 查询
我是一名优秀的程序员,十分优秀!