核心数据无法在设备上运行,但可以在模拟器上正常运行

iOS开发人员

我正在为我的应用程序使用核心数据。它在模拟器上运行良好,但无法获取真实设备上的详细信息。设备为iOS6.1。这是我正在使用的代码:

- (NSManagedObjectContext *) getCurrentMangedContext
{
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"ForceData" withExtension:@"momd"];
    NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];  

    NSURL *storeURL =  [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]URLByAppendingPathComponent:@"ForceData.sqlite"];

    NSError *error = nil;
    NSPersistentStoreCoordinator *persistantStroreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
    if (![persistantStroreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
    {

    }
    NSManagedObjectContext *managedContext = [[NSManagedObjectContext alloc] init] ;
    [managedContext setPersistentStoreCoordinator:persistantStroreCoordinator];
    modelURL = nil;
    return  managedContext;
}

这就是我保存我的登录详细信息的方式,并且没有给出任何错误。

 NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context];
  [request setEntity:entity];
  NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
    if (emailString != nil)
    {
       [newManagedObject setValue:emailString forKey:@"email"]; 
    }
    if (genderString != nil)
    {
        [newManagedObject setValue:genderString forKey:@"gender"]; 
    }
    if (fNameString != nil)
    {
        [newManagedObject setValue:fNameString forKey:@"firstName"]; 
    }
    if (lNameString != nil)
    {
        [newManagedObject setValue:lNameString forKey:@"lastName"]; 
    }
   if (userIDString != nil)
    {
        [newManagedObject setValue:userIDString forKey:@"userID"]; 
    }
  NSError *error = nil;
    if (![context save:&error])
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    // Insert User details to the user DB <--------------------------

这就是我检索的方式:

- (User *) getActiveUser 
{
    NSManagedObjectContext *context = [self getCurrentMangedContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context];
    [request setEntity:entity];

    NSError *errorFetch = nil;
    NSArray *array = [context executeFetchRequest:request error:&errorFetch];
    User *objUser = (User *) [array lastObject];
    NSLog(@"%@",objUser);

    return objUser;
}

但是我没有在设备上获得用户详细信息,而是在模拟器上。有人面临同样的事情吗?

弗洛里安·米尔克(Florian Mielke)

对于您的情况,我建议ARCmanagedObjectContext在执行获取请求后释放您的

确保在应用程序中某个地方(例如的整个生命周期中都拥有strong对相应内容引用一个没有它的managedObjectContext就无法生存。核心数据项目模板显示了如何执行此操作。managedObjectContextmanagedObjectApplicationDelegateNSManagedObject

有关ARC和强引用的更多信息:https : //developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FMDB数据库无法在设备上运行,但可以在模拟器中运行

来自分类Dev

约束动画无法在设备上运行,但可以在模拟器上运行

来自分类Dev

iOS绑定库无法在模拟器上运行,但可以在设备上运行

来自分类Dev

NSMutableArray addObject在设备中崩溃,但可以在模拟器中正常运行

来自分类Dev

Facebook无法在Android设备上登录,但可以在Android Studio模拟器中使用

来自分类Dev

无法在设备上的plist中读取/写入,但可以在模拟器中

来自分类Dev

Flutter无法将图像资产加载到物理设备上(但可以在模拟器上很好地加载)

来自分类Dev

Android DatePicker:安装后,以前的日期不会在我的手机上禁用,但可以在模拟器上正常运行

来自分类Dev

无法打开AVD管理器,但可以使用模拟器运行项目

来自分类Dev

Javascript无法在移动设备上运行,但可以在台式机上运行

来自分类Dev

AppCode无法在模拟器和设备上运行

来自分类Dev

Swift应用在真实设备上崩溃但可在模拟器上运行

来自分类Dev

noUiSlider无法在Heroku上运行,但可以在本地运行

来自分类Dev

Javascript无法在Chrome上执行,但可以在FF和IE上正常运行

来自分类Dev

脚本无法在本地运行,但可以在服务器上运行

来自分类Dev

上传图片文件可在模拟器上运行,但无法在设备上运行

来自分类Dev

应用程序可在模拟器上运行,但无法在我的设备上运行

来自分类Dev

Sqlite 在模拟器上运行完美,但在移动设备上无法运行

来自分类Dev

应用在模拟器上运行正常,但在真实设备上崩溃

来自分类Dev

程序可以在旧设备和新设备的模拟器上运行,但不能在新设备上运行

来自分类Dev

Android在设备上运行,但在模拟器上崩溃

来自分类Dev

Youtube在设备上失败,可在模拟器上运行

来自分类Dev

addSubview在设备上运行,在模拟器上崩溃

来自分类Dev

Youtube在设备上失败,可在模拟器上运行

来自分类Dev

Volley 在模拟器上运行但在设备上失败

来自分类Dev

核心位置不在iOS模拟器上运行

来自分类Dev

仅在真实设备上无法在模拟器上运行Xcode项目

来自分类Dev

解析不适用于应用发行版,但可以在模拟器上或通过xcode安装在设备上时使用

来自分类Dev

AVPlayer导致模拟器崩溃,但在设备上运行正常

Related 相关文章

  1. 1

    FMDB数据库无法在设备上运行,但可以在模拟器中运行

  2. 2

    约束动画无法在设备上运行,但可以在模拟器上运行

  3. 3

    iOS绑定库无法在模拟器上运行,但可以在设备上运行

  4. 4

    NSMutableArray addObject在设备中崩溃,但可以在模拟器中正常运行

  5. 5

    Facebook无法在Android设备上登录,但可以在Android Studio模拟器中使用

  6. 6

    无法在设备上的plist中读取/写入,但可以在模拟器中

  7. 7

    Flutter无法将图像资产加载到物理设备上(但可以在模拟器上很好地加载)

  8. 8

    Android DatePicker:安装后,以前的日期不会在我的手机上禁用,但可以在模拟器上正常运行

  9. 9

    无法打开AVD管理器,但可以使用模拟器运行项目

  10. 10

    Javascript无法在移动设备上运行,但可以在台式机上运行

  11. 11

    AppCode无法在模拟器和设备上运行

  12. 12

    Swift应用在真实设备上崩溃但可在模拟器上运行

  13. 13

    noUiSlider无法在Heroku上运行,但可以在本地运行

  14. 14

    Javascript无法在Chrome上执行,但可以在FF和IE上正常运行

  15. 15

    脚本无法在本地运行,但可以在服务器上运行

  16. 16

    上传图片文件可在模拟器上运行,但无法在设备上运行

  17. 17

    应用程序可在模拟器上运行,但无法在我的设备上运行

  18. 18

    Sqlite 在模拟器上运行完美,但在移动设备上无法运行

  19. 19

    应用在模拟器上运行正常,但在真实设备上崩溃

  20. 20

    程序可以在旧设备和新设备的模拟器上运行,但不能在新设备上运行

  21. 21

    Android在设备上运行,但在模拟器上崩溃

  22. 22

    Youtube在设备上失败,可在模拟器上运行

  23. 23

    addSubview在设备上运行,在模拟器上崩溃

  24. 24

    Youtube在设备上失败,可在模拟器上运行

  25. 25

    Volley 在模拟器上运行但在设备上失败

  26. 26

    核心位置不在iOS模拟器上运行

  27. 27

    仅在真实设备上无法在模拟器上运行Xcode项目

  28. 28

    解析不适用于应用发行版,但可以在模拟器上或通过xcode安装在设备上时使用

  29. 29

    AVPlayer导致模拟器崩溃,但在设备上运行正常

热门标签

归档