Tag: 迁移

调用UITextView()需要5.8秒的Swift 2键盘扩展?

我刚刚更新了我的XCode表单6.3到7.1,从而我的项目从Swift 1.2到Swift 2。 似乎除了我的应用程序启动约6秒,然后过去,似乎工作。 我跟踪到这个类初始值设定项的问题: class TextPreviewAdapter { private let themeProvider: ThemeProvider private let containerView: UIView private let previewText: UITextView private let carretView: UIView private var carretTextPosition: UITextPosition? init(themeProvider: ThemeProvider) { self.themeProvider = themeProvider containerView = UIView() let time = CACurrentMediaTime() previewText = UITextView() print("TextPreviewAdapter \(CACurrentMediaTime() – time)") carretView = UIView() } //some unimportant code […]

核心数据迁移:无法将types“NSManagedObject_MyType”的值转换为“MyModule.MyType”

我正在做一个“中等重量”的核心数据迁移。 我正在使用映射模型从一个传统存储/数据模型迁移到不同的存储和不同的模型(即完全不同的.xcdatamodeld )文件,并在适用的情况下使用自定义的NSEntityMigrationPolicy对象。 以前我有各种与对象图无关的对象,现在我想拥有一个主对象Library ,使我能够轻松地清除所有关联的数据(使用级联删除规则)。 由于NSEntityMigrationPolicy子类中的自定义方法,我在迁移过程中遇到了问题: class LegacyToModernPolicy: NSEntityMigrationPolicy { func libraryForManager(_ manager: NSMigrationManager) -> Library { let fetchRequest: NSFetchRequest<Library> = NSFetchRequest(entityName: Library.entity().name!) fetchRequest.predicate = nil fetchRequest.sortDescriptors = [NSSortDescriptor(key: "filename", ascending: true)] fetchRequest.fetchLimit = 1 do { // will fail here if NSFetchRequest<Library> let results = try manager.destinationContext.fetch(fetchRequest) log.info("results: \(results)") if results.count == 1 { […]

iCloud核心数据模型模式迁移

根据苹果的文档 ,可以自动执行与iCloud连接的核心数据的轻量级迁移。 而另一份来自苹果的文件则表示: 如果将使用NSPersistentStoreUbiquitousContentNameKey选项configuration的持久存储迁移到新的模型版本,则商店的源自当前设备的更改历史logging也将被迁移,然后与使用新模型版本configuration的任何其他设备合并。 来自使用新版本的商店的任何更改也将合并到。 但是,如果使用自定义映射模型执行迁移,则不能将现有更改迁移到新模型版本。 我可以改变我的应用程序使用iCloud,我可以成功地将(手动)本地数据库迁移到无处不在。 所以,第一个与iCloud的核心数据并没有显示任何问题。 但是,当我添加新的模型版本时,迁移的商店不包含任何内容。 它应该包含使用旧版本模型创build的迁移内容。 the store's history of changes似乎由于某种原因而被忽略。 因此,安装新版本应用程序的testing人员会丢失使用早期版本创build的内容。 没有日志或错误。 当我尝试相同的初始化过程来存储没有NSPersistentStoreUbiquitousContentNameKey选项(本地存储),一切都很好。 所有内容都被正确迁移并被新商店包含。 第二个文件说: 但是,如果使用自定义映射模型执行迁移,则不能将现有更改迁移到新模型版本。 我认为我的需求可以匹配这种情况。 我也有自定义的映射模型。 但我不知道触发的地方。 我的商店select是非常典型的,不是那么特别: { NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; NSPersistentStoreUbiquitousContentNameKey = "moment-cloud"; NSPersistentStoreUbiquitousContentURLKey = Logs; } 商店url创build为: NSURL* docURL = [fileManager URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask].firstObject; return [docURL URLByAppendingPathComponent: kFileNameDatabaseForUbiquitous];

迁移可以在没有多个数据模型版本的情况下完成。 欢呼?

我指的是一个精彩的教程Swift核心数据教程的核心数据迁移。 啧啧称,核心数据的迁移与多个版本的数据模型齐头并进。 我正在尝试轻量级的迁移,并得出以下几点: 场景 – 我有一个数据模型,我试图添加一些新的属性到一个实体,我得到一个错误 – iOS版本 – 9.1 Swift版本 – 2.2 “用于打开商店的模型与用于创build商店的模型不兼容” 然后,我尝试通过添加代码来启用迁移而不创build任何新版本 – let options = [ NSMigratePersistentStoresAutomaticallyOption : true, NSInferMappingModelAutomaticallyOption : true ] try persistentStoreCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: URLPersistentStore, options: options) 然后我试着改变数据库的类似,即添加一个属性的实体和欢呼!!,它不会导致崩溃。 即使我试图访问特定的实体以及属性,但成功地做到了。 发生了什么是没有多个版本的迁移。 问题 – 迁移可能没有多个版本的数据模型? 链接到示例代码 – https://www.dropbox.com/s/mnb2dzxn56ghuet/CoreDataSwift-NSFetchedResultsController-master-2.zip?dl=0

Swift 3中的十进制到双精度转换

我正在将一个项目从Swift 2.2迁移到Swift 3 ,而且我试图摆脱旧的Cocoa数据types。 我的问题是在这里:将NSDecimalNumber迁移到Decimal 。 我曾经桥接NSDecimalNumber在Swift 2.2中 Double : let double = 3.14 let decimalNumber = NSDecimalNumber(value: double) let doubleFromDecimal = decimalNumber.doubleValue 现在,切换到Swift 3 : let double = 3.14 let decimal = Decimal(double) let doubleFromDecimal = ??? decimal.doubleValue不存在,也不是Double(decimal) ,甚至没有Double(decimal) decimal.doubleValue decimal as Double …唯一的黑客我想出来的是: let doubleFromDecimal = (decimal as NSDecimalNumber).doubleValue 但是,这将是完全愚蠢的尝试摆脱NSDecimalNumber ,并不得不在一段时间内使用它… 那么,要么我错过了一些明显的东西,请原谅你浪费时间,或者我认为还有一个需要解决的漏洞。 在此先感谢您的帮助。 […]

iOS7到iOS8应用程序文件的迁移

我目前正在iOS8上testing我的应用程序。 一切都运行在纯粹的iOS8上,但我正在努力从iOS7的应用程序文件迁移,将发生在iOS8将被公开发布的用户。 由于我的应用程序使用了多个“标准目录”(文档,应用程序支持,…),我希望确保迁移顺利。 iOS8上的应用程序文件系统结构发生了变化(请阅读iOS beta 4发行说明和文件系统编程指南 )。 当iOS8将安装在设备上时,我想所有先前安装的应用程序和所有相关文件(在文档,应用程序支持等中)将被重新组织以匹配新的结构。 你们是否有任何关于iOS7到iOS8升级过程中发生的变化列表的线索? 我找不到有关此主题的任何文档。 有没有办法testing/模拟iOS7应用沙箱到新的iOS8沙箱结构的迁移? 谢谢 奖金问题:操作系统升级时应用程序GUID是否改变?

如果我的已发行v1版本没有版本化的核心数据模型,我可以使用“自动轻量级迁移”吗?

如果我的已发行v1版本没有版本化的核心数据模型,我可以使用“自动轻量级迁移”吗? 如果是的话,是否有任何关键改变到我需要申请的文件化步骤?

iOS:将现有的核心数据库迁移到iCloud中

我在现有的应用程序中使用核心数据。 现在我想集成iCloud,以便用户可以在他们的iOS设备之间同步他们的内容。 为此,我为我的NSPersistentStoreCoordinator编写了下面的代码(当然,占位符是在我的代码中填写的): – (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (persistentStoreCoordinator_ != nil) { return persistentStoreCoordinator_; } NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"<DB_Name>.sqlite"]; persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; NSPersistentStoreCoordinator* psc = persistentStoreCoordinator_; if (IOS_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.0")) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSFileManager *fileManager = [NSFileManager defaultManager]; // Migrate datamodel NSDictionary *options = nil; // this needs to match the […]

使用轻量级迁移更改核心数据实体名称?

有没有办法在iOS上仍然使用“自动轻量级移植”的同时更改核心数据实体名称的名称?

核心数据迁移:属性映射值expression式

我目前在我的实体上有一个cardType属性,在旧模型中可以是“math”,“图像”或“文本”。 在新模型中,我将只使用“math”和“文本”,并且还具有hasImage属性,如果旧的cardType是Image(我想要更改为“Text”),那么我想将其设置为true。 最后,我有一套另一个实体,“牌”,其中一套可以与一个套牌相关联,在每一个套牌中,如果套牌是“图像“types之前。 这是所有可能的使用在两个版本之间创build的映射模型中的值expression式,还是我将不得不做其他? 我无法find任何文档告诉我值expression式(Apple's doc – http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreDataVersioning/Articles/vmMappingOverview.html% 23 // apple_ref / doc / uid / TP40004735-SW3 – 只有一个非常简单的转换)。 如果我必须做别的事,那会是什么? 这似乎很简单,expression式应该能够做到这一点。