CoreData 数据库迁移升级笔记--swift

本文详细介绍了在数据库版本更替过程中遇到的问题及解决方法,包括错误的捕获、处理逻辑以及版本更新的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:添加新的Mode Vision 

操作步骤:选择xxxx.xcdatamodeld文件,点击Editor--> add model vision,创建新的xxxx.xcdatamodeld,在新的xxxx.xcdatamodeld文件中添加你要添加字段。

第二步:选择当前xxxx.xcdatamodeld 

操作步骤:在属性栏找到model vision 选择新的xxxx.xcdatamodeld


第三步:appDelegate.swift中修改配置如下


  原来配置:   
     
     
        if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil {
      
     
      coordinator = nil
            
            var dict = [String: AnyObject]()
            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
            dict[NSLocalizedFailureReasonErrorKey] = failureReason
            dict[NSUnderlyingErrorKey] = error
            error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
            // Replace this with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NSLog("Unresolved error \(error), \(error!.userInfo)")
            abort()
        }
        
        
   修改配置:     
        
        
      if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil {
      
            // Report any error we got.
            

            
            
            //
            
            var sqlPathRoot:NSString = url.absoluteString!
            
            var shmurl:NSURL = NSURL(string: sqlPathRoot.stringByAppendingString("-shm"))!
             var walurl:NSURL = NSURL(string: sqlPathRoot.stringByAppendingString("-wal"))!
            
               NSFileManager.defaultManager().removeItemAtURL(url, error: nil)
                NSFileManager.defaultManager().removeItemAtURL(shmurl, error: nil)
              NSFileManager.defaultManager().removeItemAtURL(walurl, error: nil)
            
            
            //在创建一次
            
            var persistentStore = coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error)
            
            
            if persistentStore == nil
            {
                print("版本更替失败了")

            }
            else
            {
             print("版本更替成功")
            
            }
              
        }




转载于:https://my.oschina.net/jesonzhang/blog/476897

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值