2016-07-18 2 views
1

Ошибка сборки обновления для магазина приложений, это крах данных ядра, но я получаю этот сбой только на устройствах iOS 8, он отлично работает на iOS 9 устройств. Я правильно выполнил легкую миграцию, а также добавила новую версию модели, сохранив старую в качестве базы, добавила словарь и в опции, добавив «addPersistentStoreWithType».Перенос основных данных - сбой сборки Appstore на устройствах iOS 8, работающих на iOS 9

ManagedObjectModel

lazy var managedObjectModel: NSManagedObjectModel = { 
    // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model. 
    let modelURL = NSBundle.mainBundle().URLForResource("abcProject", withExtension: "momd") 
    NSLog("Url is - \(modelURL)") 
    return NSManagedObjectModel(contentsOfURL: modelURL!)! 
}() 

PersistentStoreCoordinator

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = { 
    var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) 
    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("abcProject") 
    var error: NSError? = nil 
    var failureReason = "There was an error creating or loading the application's saved data." 
    do { 
     let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true] 
     NSLog("TEST564 - 7 URL - \(url)") 
     try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: mOptions) 
    } catch var error1 as NSError { 
     error = error1 
     coordinator = nil 
     // Report any error we got. 
     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("TEST564 Unresolved error \(error), \(error!.userInfo)") 
     abort() 
    } catch { 
     fatalError() 
     NSLog("TEST564 FATAL error") 

    } 

    return coordinator 
}() 

Выше мой набор кода для справки. Я искал повсюду, и я получаю детали только о легкой миграции.

Ниже журнал устройство после аварии: -

> Jul 19 11:25:00 iPhone abcProject-Production[211] <Warning>: CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) 

URL:file:///var/mobile/Containers/Data/Application/B12FCDA6-C91B-487E-8D03-CBBEB884996D/Documents/abcProject options:{ 
NSInferMappingModelAutomaticallyOption = 1; 
NSMigratePersistentStoresAutomaticallyOption = 1; 
} ... returned error Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error 134130.)" 

UserInfo=0x16b05490 {URL=file:///var/mobile/Containers/Data/Application/B12FCDA6-C91B-487E-8D03-CBBEB884996D/Documents/abcProject, metadata={ 
    NSPersistenceFrameworkVersion = 519; 
    NSStoreModelVersionHashes =  { 
     TabBanner = <3722cf8b 4ac58f43 20c84d7e 7d66865d a1382ecc 1ab25190 7b7c3fa7 843813fe>; 
     Video = <c51795f8 140c4936 de1b7615 03a944e7 f2b0451f 3c0b5887 2cfb31d3 07610d22>; 
    };NSStoreModelVersionHashesVersion = 3; 
    NSStoreModelVersionIdentifiers =  (
     "" 
    ); 
    NSStoreType = SQLite; 
    NSStoreUUID = "79788D63-BEF2-4339-BF60-1580904D9B44"; 
    "_NSAutoVacuumLevel" = 2; 
}, reason=Can't find model for source store} with userInfo dictionary { 
URL = "file:///var/mobile/Containers/Data/Application/B12FCDA6-C91B-487E-8D03-CBBEB884996D/Documents/abcProject"; 
metadata =  { 
    NSPersistenceFrameworkVersion = 519; 
    NSStoreModelVersionHashes =   { 
     TabBanner = <3722cf8b 4ac58f43 20c84d7e 7d66865d a1382ecc 1ab25190 7b7c3fa7 843813fe>; 
     Video = <c51795f8 140c4936 de1b7615 03a944e7 f2b0451f 3c0b5887 2cfb31d3 07610d22>; 
    }; 
    NSStoreModelVersionHashesVersion = 3; 
    NSStoreModelVersionIdentifiers =   (
     "" 
    ); 
    NSStoreType = SQLite; 
    NSStoreUUID = "79788D63-BEF2-4339-BF60-1580904D9B44"; 
    "_NSAutoVacuumLevel" = 2; 
}; 
reason = "Can't find model for source store"; 
} 


Jul 19 11:25:00 iPhone abcProject-Production[211] <Warning>: CoreData: annotation: NSPersistentStoreCoordinator's current model hashes are { 
TabBanner = <2efd2387 6f370f71 d585132f 9d6aa8fe afcdc841 ef6e9b89 396625d1 cbc99cea>; 
Video = <c51795f8 140c4936 de1b7615 03a944e7 f2b0451f 3c0b5887 2cfb31d3 07610d22>; 
} 

Jul 19 11:25:00 iPhone abcProject-Production[211] <Warning>: Unresolved error Optional(Error Domain=YOUR_ERROR_DOMAIN Code=9999 "Failed to initialize the application's saved data" UserInfo=0x168e0c90 {NSLocalizedDescription=Failed to initialize the application's saved data, NSUnderlyingError=0x16b05350 "The operation couldn’t be completed. (Cocoa error 134130.)", NSLocalizedFailureReason=There was an error creating or loading the application's saved data.}), [NSLocalizedDescription: Failed to initialize the application's saved data, NSUnderlyingError: Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error 134130.)" 

UserInfo=0x16b05490 {URL=file:///var/mobile/Containers/Data/Application/B12FCDA6-C91B-487E-8D03-CBBEB884996D/Documents/abcProject, metadata={ 
NSPersistenceFrameworkVersion = 519; 
NSStoreModelVersionHashes =  { 
    TabBanner = <3722cf8b 4ac58f43 20c84d7e 7d66865d a1382ecc 1ab25190 7b7c3fa7 843813fe>; 
    Video = <c51795f8 140c4936 de1b7615 03a944e7 f2b0451f 3c0b5887 2cfb31d3 07610d22>; 
}; 

NSStoreModelVersionHashesVersion = 3; 
NSStoreModelVersionIdentifiers =  (
    "" 
); 

NSStoreType = SQLite; 
NSStoreUUID = "79788D63-BEF2-4339-BF60-1580904D9B44"; 
"_NSAutoVacuumLevel" = 2; 
}, reason=Can't find model for source store}, NSLocalizedFailureReason: There was an error creating or loading the application's saved data.] 
Jul 19 11:25:01 iPhone ReportCrash[212] <Error>: task_set_exception_ports(B07, 400, D03, 0, 0) failed with error (4: (os/kern) invalid argument) 

Jul 19 11:25:01 iPhone ReportCrash[212] <Notice>: ReportCrash acting against PID 211 

Jul 19 11:25:01 iPhone ReportCrash[212] <Notice>: Formulating crash report for process abcProject-Production[211] 

Jul 19 11:25:01 iPhone SpringBoard[43] <Warning>: BSXPCMessage received error for message: Connection invalid 

Jul 19 11:25:01 iPhone SpringBoard[43] <Warning>: Unable to get short BSD proc info for 211: No such process 

Jul 19 11:25:01 iPhone SpringBoard[43] <Warning>: Unable to get short BSD proc info for 211: No such process 

Jul 19 11:25:01 iPhone mediaserverd[37] <Notice>: '' com.abcProject(pid = 211) setting DiscoveryMode = DiscoveryMode_None, currentDiscoveryMode = DiscoveryMode_None 

Jul 19 11:25:01 iPhone wifid[69] <Notice>: WiFi:[490600501.266659]: Foreground Network Application exited. 

Jul 19 11:25:01 iPhone AppStore[175] <Warning>: [SSMetricsEventController] Direct-access controller is calling through XPC to flush Unreported Events 

Jul 19 11:25:01 iPhone wifid[69] <Notice>: WiFi:[490600501.267352]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd itunesstored networkd 

Jul 19 11:25:01 iPhone locationd[64] <Notice>: Gesture EnabledForTopCLient: 0, EnabledInDaemonSettings: 0 

Jul 19 11:25:01 iPhone com.apple.xpc.launchd[1] (UIKitApplication:com.abcProject[0xb6e0][211]) <Notice>: Service exited due to signal: Abort trap: 6 

Jul 19 11:25:01 iPhone com.apple.xpc.launchd[1] (UIKitApplication:com.abcProject[0xb6e0]) <Notice>: Service only ran for 6 seconds. Pushing respawn out by 2147483641 seconds. 

Jul 19 11:25:01 iPhone locationd[64] <Notice>: Gesture EnabledForTopCLient: 0, EnabledInDaemonSettings: 0 

Jul 19 11:25:01 iPhone SpringBoard[43] <Warning>: Application 'UIKitApplication:com.abcProject[0xb6e0]' crashed. 

Jul 19 11:25:01 iPhone assertiond[58] <Warning>: pid_suspend failed for <BKNewProcess: 0x1668b480; com.abcProject; pid: 211; hostpid: -1>: Unknown error: -1, Unknown error: -1 

Jul 19 11:25:01 iPhone assertiond[58] <Warning>: Could not set priority of <BKNewProcess: 0x1668b480; com.abcProject; pid: 211; hostpid: -1> to 2, priority: No such process 

Jul 19 11:25:01 iPhone assertiond[58] <Warning>: Could not set priority of <BKNewProcess: 0x1668b480; com.abcProject; pid: 211; hostpid: -1> to 4096, priority: No such process 

Jul 19 11:25:01 iPhone UserEventAgent[17] <Warning>: id=com.abcProject pid=211, state=0 

Jul 19 11:25:01 iPhone ReportCrash[212] <Notice>: Saved report to /var/mobile/Library/Logs/CrashReporter/abcProject-Production_2016-07-19-112501_iPhone.ips 

Jul 19 11:25:06 iPhone wifid[69] <Notice>: WiFi:[490600506.681414]: WiFi unquiescing requested by "locationd" 

Jul 19 11:25:06 iPhone wifid[69] <Notice>: WiFi:[490600506.686744]: WiFi unquiescing requested by "locationd" 

Jul 19 11:25:06 iPhone wifid[69] <Notice>: WiFi:[490600506.743193]: WiFi unquiescing requested by "locationd" 

Jul 19 11:25:08 iPhone wifid[69] <Notice>: WiFi:[490600508.843256]: Client itunesstored set type to normal application 

Jul 19 11:25:08 iPhone wifid[69] <Notice>: WiFi:[490600508.844080]: __WiFiManagerSetEnableState: state TRUE, manager->enable.setting TRUE, manager->unlockedSinceBoot TRUE 

Jul 19 11:25:08 iPhone wifid[69] <Notice>: WiFi:[490600508.845449]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd networkd 

Jul 19 11:25:09 iPhone locationd[64] <Notice>: Gesture EnabledForTopCLient: 0, EnabledInDaemonSettings: 0 

Jul 19 11:25:12 iPhone aggregated[29] <Warning>: Scheduling parameters: 0 minutes before midnight, 4.0 time(s)/day 

Jul 19 11:25:12 iPhone aggregated[29] <Warning>: delay: 595 into interval 21600 => 22195 

Jul 19 11:25:12 iPhone aggregated[29] <Warning>: Next ADDaily run scheduled in 06:09:55 at 2016-07-19 12:05:07 +0000 

Jul 19 11:25:12 iPhone addaily[213] <Warning>: addaily started 

Jul 19 11:25:12 iPhone addaily[213] <Warning>: daily tasks for day 17000 

Jul 19 11:25:13 iPhone addaily[213] <Warning>: Filtering only beta sessions 

Jul 19 11:25:13 iPhone addaily[213] <Warning>: Saved Sessions as /var/mobile/Library/Logs/CrashReporter/log-sessions-2016-07-19-112513.session 

Jul 19 11:25:23 iPhone addaily[213] <Warning>: addaily ended 
+0

Есть ли у вас какие-либо подробности об аварии? Сейчас даже не ясно, что означает, что авария связана с миграцией. –

+0

Я отредактировал вопрос с полным сбоем журнала устройства после установки. Пожалуйста, загляните в него и сообщите мне, сможете ли вы найти проблему. Спасибо –

+0

Я также сталкиваюсь с той же проблемой. Миграция работает на устройстве iOS 9, но сбой на устройствах iOS 8. –

ответ

0

Наконец-то я получил его, сделав простое изменение.

Ранее код: -

url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("abcProject1") 

Исправлен код: -

url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("abcProject1.sqlite") 

< добавления .sqlite> расширение на мой Путь URL решен вопрос для меня. Он полностью протестирован со всеми возможными сценариями. Спасибо вам за помощь.

2

ошибка, Can't find model for source store говорит, что, когда приложение пыталось перенести постоянное хранилище, он не мог найти модель данных, которая была использована для создайте магазин. Для миграции данных требуются как старые, так и новые хранилища данных. Старый используется для загрузки данных, а новый используется для обновления данных для будущего использования.

Причина, по которой это работает в iOS 9, заключается в том, что iOS 9 добавило кэширование модели для использования в облегченных миграциях магазинов SQLite. На iOS 9 вы можете успешно перейти без старой модели, потому что старая версия будет автоматически кэшироваться. Эта функция недоступна в iOS 8, поэтому, если вы все еще поддерживаете 8, вам все равно нужно включить старую версию модели в ваше приложение.

+0

Большое вам спасибо - Да, это то, что я думал , но дело в том, что у меня есть вся модель данных от запуска, я сделал эту миграцию с теми же сценариями для других проектов, и они работают нормально. Я уверен, что должно быть небольшая проблема в нем. –

+0

Пожалуйста, см. Мой ответ. Если бы вы могли сказать мне, почему он работал правильно? –

-1

Чтобы избежать аварии, я создал новую базу данных для iOS 8, потому что мне не нужны существующие данные.

Я изменил свое storeURL от

let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("abcProject") 

в

let url:NSURL 
if (OS_VERSION<9.0) 
{ 
    url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("abcProject1") 
} 
else 
{ 
    url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("abcProject") 
} 

Это зафиксировал крах для меня.

+0

Спасибо, Но мне нужны существующие данные, поэтому я не могу это использовать. –

Смежные вопросы