0

我有一个现有的应用程序(可在 appStore 中获得),我想从头开始重新启动,并将其作为更新。所以我开始了一个新项目,并像在旧项目中一样复制所有内容(名称、bundleId、xcdatamodel 等)。

我想测试用新应用程序更新旧应用程序时数据是否保存完好,但是当我构建它时,我从 xcode “应用程序权限被拒绝”中收到此错误。

我读到这个错误是由于我尝试安装一个与设备上已经存在的相同 bundleId 的应用程序。我不明白,因为我正在尝试模拟更新。

我该怎么做才能让它工作?

4

1 回答 1

0

好的,这是对我有帮助的解决方案。

  • 使用 iTunes 而不是 xcode 直接构建构建存档并安装它。
  • 另一个问题是,当 xcode 可用时,该应用程序的第一个版本是为第一台 iPad 构建的,但设备尚未售出。这是使用的旧 -(NSPersistentStoreCoordinator *)persistentStoreCoordinator 方法:

-(NSPersistentStoreCoordinator *)storeCoorditator{
    if(storeCoorditator){
        return storeCoorditator;
    }

    storeCoorditator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self objectModel]];
    NSError *lc_error = nil;

    NSString *lc_path = [NSString stringWithFormat:@"%@/data.sqlite",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];

    NSURL *storeUrl = [NSURL fileURLWithPath:lc_path];

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

    [storeCoorditator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&lc_error];
    return storeCoorditator;
}

这是我尝试使用的方法:


-(NSPersistentStoreCoordinator *)persistentStoreCoordinator{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }

    NSURL *storeUrl = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"PDF.sqlite"];

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }

    return _persistentStoreCoordinator;
}

由于 storeUrl 不一样,因此无法找到数据;)现在一切都很好,我可以取回我的数据了!

于 2013-07-17T10:15:56.620 回答