我有一个在应用程序启动后运行的函数,它检索具有指定ID的领域对象并显示它。
问题是应用程序请求从API获取对象或REALM处于写入事务中。所以那个时候的对象是零。
问题是:如何创建一个等待REALM对象存在且具有指定ID的线程?
答案 0 :(得分:1)
最简单的方法是使用Realm通知:
https://realm.io/docs/objc/latest/#notifications
// This should be a field in your class:
RLMNotificationToken *token;
.............
__weak <<YourClass>> *weakSelf = self; // Create a weak reference to self to avoid a retain cycle
self.token = [realm addNotificationBlock:^(NSString *notification, RLMRealm realm)
{
<<YourClass>> *strongSelf = weakSelf; // Create a strong reference to self to make sure it's still there
Product *product = [Product objectInRealm:realm forPrimaryKey:<<primaryKey>>];
if (product != nil)
{
// The product is present, do some action
[strongSelf.token invalidate]; // Stop listening for changes
}
}];
我编辑了更多细节的源代码。请注意我已经在浏览器中写了这个,所以它没有经过测试,我很长时间没有使用过Objective-C(最近只在Swift编写)。