我正在对我们的应用程序升级版本的对象模型进行相当多的更改,即.添加/删除实体,新属性和关系.看起来这项工作真的可以为正确的核心数据迁移做好准备.由于数据主要用作缓存以增强离线浏览体验.在这一点上真的不需要迁移我认为如果它被吹走并重新创建将会更加简单.
根据我在这个主题上遇到的各种帖子,总体策略是
这是重新初始化objectModel的代码
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"<model name>" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
Run Code Online (Sandbox Code Playgroud)
并重新创建objectModel并存储
objectManager = [RKObjectManager objectManagerWithBaseURL:
[NSString stringWithFormat:@"http://%@/v3",
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"APIDomain"]]];
NSManagedObjectModel *objectModel = [self managedObjectModel];
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:storeName usingSeedDatabaseName:nil managedObjectModel:objectModel delegate:nil];
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'+ entityForName:找不到实体名称'UTCity'的NSManagedObjectModel'
我觉得它非常接近,因为重新启动应用程序成功创建新商店正确运行.
-PF
我正在尝试用标准的iOS库来确定"发现"Gimbal信标.根据Radius Networks和Blue Sense Networks的说法,万向信标不会广播标准的iBeacon格式协议,因此如果不使用Gimbal iOS SDK就无法发现.
"另一方面,万向节信标广播滚动加密代码,以确保只有具有正确权限的用户才能看到信标的信息.基本上这意味着每次万向节信标发出信号时,它都包含不同的数据.此外,任何支持BLE的智能手机可以看到Gimbal信标广告,但由于它们在每次广播时发生变化,这意味着智能手机会多次检测到相同的物理信标并将每个检测视为不同的设备.因此,为了正确使用万向节信标,开发人员没有其他信息选择,但通过他们的专有SDK来做." - Blue Sense Networks
我已经看到一些关于访问这些信标的相互矛盾的陈述,但我没有看到任何具体的例子.可能吗?有吗?