需要 xcdatamodel 吗?
Is xcdatamodel needed?
这是我的 iOS 应用程序中使用 CoreData 的实体对象。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "Price.h"
@interface DataPrice : NSManagedObject
@property (nonatomic) NSInteger id;
@property (nonatomic, retain) NSNumber *ron95;
@property (nonatomic, retain) NSNumber *ron92;
@property (nonatomic, retain) NSNumber *dieselNormal;
@property (nonatomic, retain) NSNumber *dieselSpecial;
@property (nonatomic, retain) NSDate *postDate;
+ (instancetype)insertDataPriceWithPrice:(Price*)price
inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext;
+ (instancetype)fetchDataPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext;
+ (Price*)fetchPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext;
@end
#import "DataPrice.h"
@implementation DataPrice
@dynamic id;
@dynamic ron95;
@dynamic ron92;
@dynamic dieselNormal;
@dynamic dieselSpecial;
@dynamic postDate;
+ (instancetype)insertDataPriceWithPrice:(Price*)price
inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext
{
DataPrice* dataPrice = [NSEntityDescription insertNewObjectForEntityForName:self.entityName
inManagedObjectContext:managedObjectContext];
dataPrice.id = price.id;
dataPrice.ron95 = price.ron95;
dataPrice.ron92 = price.ron92;
dataPrice.dieselNormal = price.dieselNormal;
dataPrice.dieselSpecial = price.dieselSpecial;
dataPrice.postDate = price.postDate;
return dataPrice;
}
+ (NSString*)entityName
{
return @"Price";
}
+ (instancetype)fetchDataPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
NSEntityDescription *entity = [NSEntityDescription entityForName:self.entityName inManagedObjectContext:managedObjectContext];
if (!entity) {
return NULL;
}
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"postDate" ascending:NO];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = entity;
request.sortDescriptors = @[ sortDescriptor ];
request.fetchLimit = 1;
NSError *error;
NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
DataPrice *result = fetchResults.firstObject;
return result;
}
+ (Price*)fetchPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
DataPrice *dataPrice = [self fetchDataPriceInManagedObjectContext:managedObjectContext];
Price *price = [[Price alloc] init];
price.id = dataPrice.id;
price.ron92 = dataPrice.ron92;
price.ron95 = dataPrice.ron95;
price.dieselNormal = dataPrice.dieselNormal;
price.dieselSpecial = dataPrice.dieselSpecial;
price.postDate = dataPrice.postDate;
return price;
}
@end
我将 class 命名为 DataPrice
,但希望实体为 Price
。
我的申请需要 xcdatamodel
吗?我该如何定义?
一个。是的,您需要一个数据模型。你得到它 File | 新… | 文件 和 sheet iOS | 核心数据 | 数据模型.
然而,从一开始就创建 Core Data 应用程序更容易。
乙。 类 和实体(类型)可以有不同的名称。您只需将具有不同名称的 class 分配给实体类型即可。 (分配了默认 NSManagedObject
,所有未调用 NSManagedObject
的实体类型的不同名称是什么。;-))但是没有理由这样做。
这是我的 iOS 应用程序中使用 CoreData 的实体对象。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "Price.h"
@interface DataPrice : NSManagedObject
@property (nonatomic) NSInteger id;
@property (nonatomic, retain) NSNumber *ron95;
@property (nonatomic, retain) NSNumber *ron92;
@property (nonatomic, retain) NSNumber *dieselNormal;
@property (nonatomic, retain) NSNumber *dieselSpecial;
@property (nonatomic, retain) NSDate *postDate;
+ (instancetype)insertDataPriceWithPrice:(Price*)price
inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext;
+ (instancetype)fetchDataPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext;
+ (Price*)fetchPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext;
@end
#import "DataPrice.h"
@implementation DataPrice
@dynamic id;
@dynamic ron95;
@dynamic ron92;
@dynamic dieselNormal;
@dynamic dieselSpecial;
@dynamic postDate;
+ (instancetype)insertDataPriceWithPrice:(Price*)price
inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext
{
DataPrice* dataPrice = [NSEntityDescription insertNewObjectForEntityForName:self.entityName
inManagedObjectContext:managedObjectContext];
dataPrice.id = price.id;
dataPrice.ron95 = price.ron95;
dataPrice.ron92 = price.ron92;
dataPrice.dieselNormal = price.dieselNormal;
dataPrice.dieselSpecial = price.dieselSpecial;
dataPrice.postDate = price.postDate;
return dataPrice;
}
+ (NSString*)entityName
{
return @"Price";
}
+ (instancetype)fetchDataPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
NSEntityDescription *entity = [NSEntityDescription entityForName:self.entityName inManagedObjectContext:managedObjectContext];
if (!entity) {
return NULL;
}
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"postDate" ascending:NO];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = entity;
request.sortDescriptors = @[ sortDescriptor ];
request.fetchLimit = 1;
NSError *error;
NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
DataPrice *result = fetchResults.firstObject;
return result;
}
+ (Price*)fetchPriceInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
DataPrice *dataPrice = [self fetchDataPriceInManagedObjectContext:managedObjectContext];
Price *price = [[Price alloc] init];
price.id = dataPrice.id;
price.ron92 = dataPrice.ron92;
price.ron95 = dataPrice.ron95;
price.dieselNormal = dataPrice.dieselNormal;
price.dieselSpecial = dataPrice.dieselSpecial;
price.postDate = dataPrice.postDate;
return price;
}
@end
我将 class 命名为 DataPrice
,但希望实体为 Price
。
我的申请需要 xcdatamodel
吗?我该如何定义?
一个。是的,您需要一个数据模型。你得到它 File | 新… | 文件 和 sheet iOS | 核心数据 | 数据模型.
然而,从一开始就创建 Core Data 应用程序更容易。
乙。 类 和实体(类型)可以有不同的名称。您只需将具有不同名称的 class 分配给实体类型即可。 (分配了默认 NSManagedObject
,所有未调用 NSManagedObject
的实体类型的不同名称是什么。;-))但是没有理由这样做。