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?这听起来像是一种异步方法。