- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个返回共享实例的 DataManager 类:
+ (DataManager *)sharedInstance;
{
static DataManager *sharedInstance = nil;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
sharedInstance = [[DataManager alloc] init];
});
return sharedInstance;
}
在这里我跟踪我的 managedObjectContext、managedObjectModel、persistentStoreCoordinator。
我还有一个方法,我可以拉出要显示的项目:
- (NSArray *)getItems
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
return [[self managedObjectContext] executeFetchRequest:fetchRequest error:nil];
}
现在在我的主应用程序中,当我调用此 getItems 然后单独修改项目时,我有一个 View Controller 。因此,例如设置 item.itemName = @"testName";然后调用我的保存方法。
我还有一个 iOS 8,在我的 TodayViewController 中我也调用了 getItems 方法。我有一个 NSNotification,它检测 managedObjectContext 保存。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refetchItems) name:NSManagedObjectContextDidSaveNotification object:[[DataManager sharedInstance] managedObjectContext]];
这些重新获取的项目确实被调用但返回过时的 NSManagedObjects。例如,itemName 没有更改为@"testName"。
我哪里错了?如果您需要查看任何其他代码,请告诉我。
谢谢!
最佳答案
您可以尝试以下方法来刷新特定的 ManagedObject。如果您想刷新 ManagedObject 列表,则循环每个对象并执行命令。
[_managedObjectContext refreshObject:act mergeChanges:YES];
或者对于 iOS 8.3 及以上版本,您可以使用以下方法一次性更新上下文中的所有 ManagedObject,如下所示。
[_managedObjectContext refreshAllObjects];
有点作用,但只对数据UPDATE,对增删数据没有作用。
如果不行,你也可以添加
[_managedObjectContext reset];
之后,您必须读取“重新分配”您从核心数据存储加载的所有变量。
另一种解决方案(更慢更难看)
如果上述方法不起作用,另一种解决方案是删除当前上下文并重新创建它。
我刚刚设置
_persistentStoreCoordinator = nil;
_managedObjectModel = nil;
_managedObjectContext = nil;
我有具有此属性的 CoreDataManager 类
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
在类里面,我手动创建了 setter。如果我 nill 所有变量,由于 setter ,一旦我在我的核心数据管理器类之外读取它们,它们就会再次初始化。
您可以通过使用 NSUserDefault
存储来改进这一点。它正在正确更新。在主应用程序中,如果您更改某些内容,请在 NSUserDefault
中设置标志。在扩展中,阅读此内容,如果标记了标志,则重置核心数据。这样,您将节省一些时间并使事情变得更快。
对于 NSUserDefault
的分配(在两个应用程序中 - 扩展和主要)使用这个 - 之后,你可以像往常一样从它读取数据并且它们应该是同步的
NSUserDefaults *prefs = [[NSUserDefaults alloc] initWithSuiteName:GROUP_NAME]; //share with extension
关于ios - Core Data iOS 8 Today Widget 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924223/
我需要找到当天创建的帐户,以及过去 7 天创建的帐户。 为了找到我今天的结果,它起作用了,我这样做了: SELECT * FROM `account` where DATE(created_at) =
我有一个R脚本,只打印今天的日期。它在Rstudio中运行良好,但是在批处理文件中设置为任务时会产生以下错误 Warning message: package 'dplyr' was built un
我可以使用日期范围过滤数据框: df[(df['Due Date'] >= '2017-01-01') & (df['Due Date'] <= '2017-02-01')] 但我希望能够过滤一年 最
我想提取今天的日期,如果今天是星期五,则执行 (today-3) else (today-11) 并在下面的删除语句中使用此查询的结果 这是我的查询: Delete from table where
我正在尝试这个 (datetime.datetime.today()-datetime.datetime.today()).days 给出 -1 并期待值 0 而不是我得到 -1。在这种情况下,我将结
感谢大家考虑我的新手问题。我正在使用 jQuery 迭代表并捕获数组中的所有硬编码日期。我将这些日期与 Date.today(); 进行比较使用 .isAfter() 函数。如果硬编码的日期是过去的,
我正在实现 Angular-UI datepicker作为指令,我试图让它将今天的日期显示为字符串“Today”而不是 2015/04/27。 这可能吗?我可以轻松地将 $scope.dt 更改为 "
在 Ruby 中,万圣节: Date.today - 6.months + 6.months != Date.today 我们需要更新 Ruby 的日期实现吗?其他语言有同样的问题吗? 最佳答案 如果
如何让 Moment.js 返回“今天”或其他相关条款?我无法在涵盖此内容的文档中找到任何内容。 最佳答案 您还可以使用日历功能: moment().calendar(moment().add(1,
我试过 SELECT * FROM `activity` WHERE 1 ORDER BY CASE WHEN `activity_date` >= '2019-06-14' THEN `ac
我目前在 UTC+1 时区。 TimeZoneInfo.Local.BaseUtcOffset 返回 +1。 new DateTimeOffset(DateTime.Today).AddDays(4)
想知道是否有人可以帮助我使用这个 Excel 公式。 我有一个字段,其日期格式如下 2018-07-02 11:37:19YYYY-MM-DD HH:MM:SS In the adjacent col
我想确定给定的日期对象是否与当前日期相同。下面是伪代码。 // date is a Date object function (date) { if (date == Today())
我从苹果文档中看到,在今天的小部件中,系统会拍摄快照,当需要绘制小部件时,它会先显示快照,然后在需要时执行更新。 To help your widget look up to date, the sy
我正在尝试将今日小部件的背景更改为透明,而不会产生模糊效果,但我不知道该怎么做。有人能够更改小部件的背景吗?甚至可以做到这一点吗? 最佳答案 不,您无法更改小部件背景颜色,也无法删除模糊效果 关于iO
我今天是 iOS 编程新手扩展。当我创建一个新的扩展目标时,我尝试运行它。 Error image Xcode 给出关于我的容器应用程序的错误。我尝试将所有 pod 导入扩展目标,但我的一些 pod
我为我的应用程序创建了一个显示在“今日 View ”中的小部件扩展。它工作得很好,但是它切断了下一个小部件开始的内容的底部。我试图在 preferredContentSize 中调整高度,但它似乎没有
我们最近在我们的应用程序中添加了 Today Extension。 它是一个带有简单 tableView 的扩展,用于从我们的服务器加载数据,用 Swift 编写。 但在扩展对我们的用户在线后,我们从
我目前正在开发一个 iOS Today 扩展,但我遇到了扩展高度的问题。我已经从头开始尝试了多次,但我似乎无法弄清楚额外高度的来源。 AutoLayout 哪里出错了。谢谢。 Storyboard V
理应如此 我们有一个今天的小部件,它最多显示 6 个按钮,具体取决于相应应用中的数据集。此数据使用应用程序组共享。如果至少配置了一个按钮,它将如上图所示显示。如果用户未登录,或者没有配置任何按钮,它将
我是一名优秀的程序员,十分优秀!