sitManagedObject=[self getManagedObject:mtlModel
error:error];
if (exsitManagedObject!=nil) {
[self.managedObjectContext deleteObject:exsitManagedObject];
[self.managedObjectContext save:error];
};
//-----Need Add Remove the Entity First END-----------
NSManagedObject *managedObject = [MTLManagedObjectAdapter
managedObjectFromModel:mtlModel
insertingIntoContext:self.managedObjectContext
error:error];
if (managedObject==nil) {
NSLog(@"[NSManagedObject] Error:%@",*error);
return NO;
}
if (![self.managedObjectContext save:error]) {
NSLog(@"[self.managedObjectContext] Error:%@",*error);
return NO;
};
return YES;
};
//从coredata中提取出MTLModel
-(MTLModel *)getMTLmodel:(MTLModel
*)mtlModel
error:(NSError *__autoreleasing *)error{
NSManagedObject *managedObject=[self getManagedObject:mtlModel error:error];
MTLModel *mrlMotel=[[MTLModel alloc] init];
mrlMotel = [MTLManagedObjectAdapter modelOfClass:[mtlModel class]
fromManagedObject:managedObject error:error];
if (error) {
NSLog(@"[mrlMotel] Error:%@",*error);
}
return mrlMotel;
};
//从coredata中获取已存的ManagedObject
-(NSManagedObject *)getManagedObject:(MTLModel
*)mtlModel
error:(NSError *__autoreleasing *)error{
NSString *entityName=[[mtlModel class] managedObjectEntityName];
//获取entity中对象数量
NSFetchRequest *requestCount=[NSFetchRequest fetchRequestWithEntityName:entityName];
NSUInteger count=[self.managedObjectContext countForFetchRequest:requestCount
error:error];
NSLog(@"count result:%d",count);
NSLog(@"sortDescriptor result:%@",[[mtlModel class] sortDescriptor]);
//获取entity中第一个对象.这个对象必须存在且唯一。
if (count==1) {
NSFetchRequest *request=[[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:entityName
inManagedObjectContext:self.managedObjectContext]];
NSSortDescriptor *sort=[[mtlModel class] sortDescriptor];
NSArray *sortDes=[[NSArray alloc] initWithObjects:sort, nil nil];
[request setSortDescriptors:sortDes];
NSArray *getObject=[self.managedObjectContext
executeFetchRequest:request
error:error];
return [getObject objectAtIndex:0];
}
return nil;
}
//从文件系统中删除sqlite文件
-(bool)deleteAllEntities{
bool status=NO;
NSError *error;
@try{
[[NSFileManager defaultManager] removeItemAtPath:[self storeURL].path
error:&error];
status=YES;
}
@catch (NSException *exception) {
status=NO;
}
@finally {
return status;
}
}
@end 3.后台执行程序 [objc] view plaincopyprint?
- - (void)loadBannerList:(void (^)(NSArray *bannerList, NSError *error))block {
-
- NSParameterAssert(block);
-
- [self POST:@"webresources/homePage"
- parameters:nil
- resultClass:BannerWrapper.class
- resultKeyPath:nil
- completion:^(AFHTTPRequestOperation *operation, id responseObject, NSError *error) {
-
- //-----------------------Persistence DEMO---------------------
- //If network error, get data from CoreData, else save data into CoreData
- if (!error) {
- NSError *err;
- Persistence *persistence=[[Persistence alloc] init];
- BOOL save=[persistence saveMTLModel:responseObject error:&err];
- if (save==NO) {
- NSLog(@"Save ERROR!");
- }
- }else{
- NSError *err;
- Persistence *persistence=[[Persistence alloc] init];
- BannerWrapper *resObject=[[BannerWrapper alloc] init];
- BannerWrapper *object=[[B
|