Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MagicalRecord Find(All)有时无法从关系中查找对象_Ios_Core Data_Magicalrecord - Fatal编程技术网

Ios MagicalRecord Find(All)有时无法从关系中查找对象

Ios MagicalRecord Find(All)有时无法从关系中查找对象,ios,core-data,magicalrecord,Ios,Core Data,Magicalrecord,当我关闭模拟器并重新打开它或按下并弹出一些视图控制器时,关系中的对象就消失了。当我第一次将对象保存到核心数据时,仍然可以获取对象 这是将对象保存到核心数据的代码: for (NSDictionary *obj in results) { Stock *stock = [Stock MR_createEntity]; stock.name = obj[@"name"]; NSArray *categories = obj[@"categories"]; if ([c

当我关闭模拟器并重新打开它或按下并弹出一些视图控制器时,关系中的对象就消失了。当我第一次将对象保存到核心数据时,仍然可以获取对象

这是将对象保存到核心数据的代码:

for (NSDictionary *obj in results) {
    Stock *stock = [Stock MR_createEntity];
    stock.name = obj[@"name"];
    NSArray *categories = obj[@"categories"];
    if ([categories count] > 0) {
        for (NSDictionary *category in categories) {
            StockCategory *stockCategory = [StockCategory MR_createEntity];
            stockCategory.categoryId = category[@"_id"];
            stockCategory.name = category[@"name"];
            [stock addCategoriesObject:stockCategory];
        }
    }
}
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
    self.stocks = [Stock MR_findAllSortedBy:@"createdDate" ascending:NO];
    dispatch_async(dispatch_get_main_queue(), ^{
        [SVProgressHUD dismiss];
        [self.tableView reloadData];
    });
}];
self.stocks = [Stock MR_findAllSortedBy:@"createdDate" ascending:NO];
dispatch_async(dispatch_get_main_queue(), ^{
    [SVProgressHUD dismiss];
    [self.tableView reloadData];
});
以下代码用于从核心数据检索对象:

for (NSDictionary *obj in results) {
    Stock *stock = [Stock MR_createEntity];
    stock.name = obj[@"name"];
    NSArray *categories = obj[@"categories"];
    if ([categories count] > 0) {
        for (NSDictionary *category in categories) {
            StockCategory *stockCategory = [StockCategory MR_createEntity];
            stockCategory.categoryId = category[@"_id"];
            stockCategory.name = category[@"name"];
            [stock addCategoriesObject:stockCategory];
        }
    }
}
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
    self.stocks = [Stock MR_findAllSortedBy:@"createdDate" ascending:NO];
    dispatch_async(dispatch_get_main_queue(), ^{
        [SVProgressHUD dismiss];
        [self.tableView reloadData];
    });
}];
self.stocks = [Stock MR_findAllSortedBy:@"createdDate" ascending:NO];
dispatch_async(dispatch_get_main_queue(), ^{
    [SVProgressHUD dismiss];
    [self.tableView reloadData];
});
如果我关闭模拟器并重新启动它,我会从核心数据中获取对象,但股票的StockCategory数组是空的。我记得当我第一次将股票保存到核心数据时,股票的StockCategory数组不是空的。为什么当我重新启动模拟器时,关系中的对象就消失了

模型: 股票

股票类别.h

@class Stock;

@interface StockCategory : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Stock *stock;

@end

您的模型中是否从一开始就有类别?您是否尝试过清理/卸载/重新安装应用程序?当您更改CoreData中的某些内容时,如果您对xcdatamodel进行了一些更改,则可能需要进行一些清理。MR_的完成块是否在退出之前使用completion:get run保存到PersistentStore?这听起来像是一种异步方法。