2014-10-12 16 views
9

iCloud Core Data uygulaması iOS7'de harika çalışıyor ve başlatmaya hazır. IOS 8'de test ettiğimde, aşağıdaki hatayı alıyorum ve iCloud'a veri yüklemeye çalışırken bunu düzeltemiyorum.iCloud Çekirdek Verisi IOS8 Yolu, herhangi bir CloudDocs Kapsayıcısının dışındadır

..

014-10-12 15:14:17.862 XXXXXXX [4662:236693] __45-[PFUbiquityFilePresenter processPendingURLs]_block_invoke(439): CoreData: Ubiquity: Librarian returned a serious error for starting downloads Error Domain=BRCloudDocsErrorDomain Code=6 "The operation couldn’t be completed. (BRCloudDocsErrorDomain error 6 - Path is outside of any CloudDocs container, will never sync)" UserInfo=0x7f8b1a525f60 {NSDescription=Path is outside of any CloudDocs container, will never sync, NSFilePath=/Users/garyrea/Library/Developer/CoreSimulator/Devices/9AADFE8E-5ECC-4969-9418-57DA45B747C9/data/Containers/Data/Application/AD2E5E62-7295-4371-A08D-1790E8FCCD96/Documents/CoreDataUbiquitySupport/nobody~simA28745A4-A67F-598C-9260-F9AC36609ECF/iCloud/5B8BFA36-1ACA-4966-B7ED-A7344D36ACF1/container/nobody~simA28745A4-A67F-598C-9260-F9AC36609ECF/iCloud/2trlqdMQVpJ~wlEfiLvjWtQfrUJ8YiNCd84KW_xiw4A=/F0CF5F29-D437-4728-B0A2-C5BB90BBC239.1.cdt} with userInfo { 
    NSDescription = "Path is outside of any CloudDocs container, will never sync"; 
    NSFilePath = "/Users/garyrea/Library/Developer/CoreSimulator/Devices/9AADFE8E-5ECC-4969-9418-57DA45B747C9/data/Containers/Data/Application/AD2E5E62-7295-4371-A08D-1790E8FCCD96/Documents/CoreDataUbiquitySupport/nobody~simA28745A4-A67F-598C-9260-F9AC36609ECF/iCloud/5B8BFA36-1ACA-4966-B7ED-A7344D36ACF1/container/nobody~simA28745A4-A67F-598C-9260-F9AC36609ECF/iCloud/2trlqdMQVpJ~wlEfiLvjWtQfrUJ8YiNCd84KW_xiw4A=/F0CF5F29-D437-4728-B0A2-C5BB90BBC239.1.cdt"; 
} for these urls: (
    "file:///Users/garyrea/Library/Developer/CoreSimulator/Devices/9AADFE8E-5ECC-4969-9418-57DA45B747C9/data/Containers/Data/Application/AD2E5E62-7295-4371-A08D-1790E8FCCD96/Documents/CoreDataUbiquitySupport/nobody~simA28745A4-A67F-598C-9260-F9AC36609ECF/iCloud/5B8BFA36-1ACA-4966-B7ED-A7344D36ACF1/container/nobody~simA28745A4-A67F-598C-9260-F9AC36609ECF/iCloud/2trlqdMQVpJ~wlEfiLvjWtQfrUJ8YiNCd84KW_xiw4A=/F0CF5F29-D437-4728-B0A2-C5BB90BBC239.1.cdt" 
) 

benim app temsilci uzantısı kodunu nerede benim sorunum iOS8 ile doc dizininde belge dizini ve değişiklikleri alıyorum nasıl ilişkilidir şüpheli ama sadece bu anlamaya olamaz Ben kalıcı mağazamı oluşturuyorum. İlk kurulum için bir tohum veri tabanım var.

- (NSPersistentStoreCoordinator *)createPersistentStoreCoordinator{ 
    NSPersistentStoreCoordinator *persistentStoreCoordinator = nil; 
    NSManagedObjectModel *managedObjectModel = [self createManagedObjectModel]; 
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:managedObjectModel]; 
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@ 
    "CoreData.sqlite"];  

    if (![[NSFileManager defaultManager]fileExistsAtPath:[storeURL path]]){ 
     NSURL *preloadURL=[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"SeedDatabase" ofType:@ 
     "sqlite"]]; 
     NSError *error=nil; 
     if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&error]){ 
      NSLog(@ 
      "File couldnt save"); 
     } 
    } 


    NSUbiquitousKeyValueStore *kvStore=[NSUbiquitousKeyValueStore defaultStore]; 
    if (![kvStore boolForKey:@"SEEDED_DATA"]){ 
     NSLog (@ 
     "In the new database"); 
     NSURL *seedStoreURL=[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"SeedDatabase" ofType:@ 
     "sqlite"]]; 
     NSError *seedStoreErrpr; 
     NSDictionary *[email protected]{NSReadOnlyPersistentStoreOption: @YES}; 
     NSPersistentStore *seedStore=[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:seedStoreURL options:seedStoreOptions error:&seedStoreErrpr]; 

     NSDictionary *iCloudOptions [email protected]{NSPersistentStoreUbiquitousContentNameKey: @"iCloud", 
             NSMigratePersistentStoresAutomaticallyOption:@YES, 
             NSInferMappingModelAutomaticallyOption:@YES 
     }; 

     NSOperationQueue *queue=[[NSOperationQueue alloc] init]; 
     [queue addOperationWithBlock:^{ 
      NSError *error; 
      [persistentStoreCoordinator migratePersistentStore:seedStore toURL:storeURL options:iCloudOptions withType:NSSQLiteStoreType error:&error]; 
      NSLog(@ 
      "Persistant store migrated"); 
      [kvStore setBool:YES forKey:@ 
      "SEEDED_DATA"]; 
      // [self checkForDuplicates]; 
     }]; 
    }else{ 
     NSError *error; 
     NSDictionary *storeOptions [email protected]{NSPersistentStoreUbiquitousContentNameKey: @ 
      "iCloud" 
     }; 
     if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType 
             configuration:nil 
             URL:storeURL 
             options:storeOptions 
             error:&error]) { 
      NSLog(@ 
      "Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 
     } 
    } 

    return persistentStoreCoordinator; 
} 

- (NSURL *)applicationDocumentsDirectory{ 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 
+1

Sonuç olarak bir çözüm buldunuz mu? Aynı hata burada .. – MatterGoal

+1

Bunu icloudOptions sözlüğünde iCloud dizini belirterek çözebiliyordum. Ayrıca tüm cihazlardan tamamen kaldırmam, iCloud sürücü dosyalarını silmem ve bir cihazda yeniden başlatmam gerekiyordu. Gönderildiği tarih: – grayentropy

+0

Aynı hatayı alıyorum ve eğer kullanıcı iCloud kapalıysa ve 'NSFileManager'' bulut dizini sorulduğunda 'nil' döndürürse ne yaparsınız? –

cevap

5

Bu hatayı, iCloud sürücü dizinini belirterek çözdüm (developer.apple.com arabirimindekiyle aynı ad).

-(NSURL *)cloudDirectory 
{ 
NSFileManager *fileManager=[NSFileManager defaultManager]; 
NSString *[email protected]"iCloud"; 
NSString *bundleID=[[NSBundle mainBundle]bundleIdentifier]; 
NSString *cloudRoot=[NSString stringWithFormat:@"%@.%@",teamID,bundleID]; 
NSURL *cloudRootURL=[fileManager URLForUbiquityContainerIdentifier:cloudRoot]; 
NSLog (@"cloudRootURL=%@",cloudRootURL); 
return cloudRootURL; 
} 

ve NSPersistentStoreUbiquitousContentURLKey

NSDictionary *storeOptions [email protected]{NSPersistentStoreUbiquitousContentNameKey: @"iCloud", 
            NSPersistentStoreUbiquitousContentURLKey:[self cloudDirectory], 
            }; 
Ben tüm cihazlardan uygulaması kaldırılana yüzden bazı garip hatalar başlamıştı

, iCloud sürücü dosyası silinir ve yeniden bir olarak icloudOptions Sözlük bunu içeren gerçek bir koştu cihaz ve iyi çalıştı. Şimdi IOS7 üzerinde çalışıp çalışmadığından emin değilim, ancak sadece NSPersistentStoreUbiquitousContentURLKey'i belirttiğimden eminim ki, gayet emin olmalıyım.

+1

Bunu denedim ama şunu elde ederim: "URL'nin bileşenlerini ayrıştırma devam edemiyor:/var/mobile/Library/Mobile Documents/iCloud ~ com ~ example ~ foo/CoreData/MyAppCloudStore/.baseline/MyAppCloudStore " – Ixx

+0

Ekip kimliğinde ne ayarladınız? – user3065901

-1

Bazı test verileri yüklenirken aynı sorunu yaşadım. Verilerin yüklenmesi için tüm kayıtları siliyordum. İstisnai önlemek için, temizlik ve yükleme arasında basit bir uyku (1) yeterliydi.

İlgili konular