私は Core-Data でかなり新しいです、sry。私の Core-Data Entity には、NSManagedObject から派生したサブクラス「CachedWeatherDataEntity」があります。プロトコル「WeatherDataCache」に「CachedWeatherDataEntity.h」ファイルをインポートします。このプロトコルは、データを保存/フェッチする方法を定義し、Core-Data の「コア機能」を設定します。しかし、コンパイラは対応する実装「WeatherDataCacheImpl」で私のエンティティを見つけることができません。エラーはコードの最後にあります。このアプリはこのチュートリアルに基づいています。
CachedWeatherDataEntity.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface CachedWeatherDataEntity : NSManagedObject
@property (nonatomic, retain) NSNumber * airHumidity;
@property (nonatomic, retain) NSNumber * airPressure;
@property (nonatomic, retain) NSDate * dateTime;
@property (nonatomic, retain) NSNumber * illuminance;
@property (nonatomic, retain) NSNumber * precipitation;
@property (nonatomic, retain) NSNumber * radiation1;
@property (nonatomic, retain) NSNumber * radiation2;
@property (nonatomic, retain) NSDate * sunDown;
@property (nonatomic, retain) NSDate * sunUp;
@property (nonatomic, retain) NSNumber * temperature;
@property (nonatomic, retain) NSNumber * windDirection;
@property (nonatomic, retain) NSNumber * windSpeed;
@end
CachedWeatherDataEntity.m
#import "CachedWeatherDataEntity.h"
@implementation CachedWeatherDataEntity
@dynamic airHumidity;
@dynamic airPressure;
@dynamic dateTime;
@dynamic illuminance;
@dynamic precipitation;
@dynamic radiation1;
@dynamic radiation2;
@dynamic sunDown;
@dynamic sunUp;
@dynamic temperature;
@dynamic windDirection;
@dynamic windSpeed;
@end
WeatherDataCache.h
#import <Foundation/Foundation.h>
#import "WeatherDataSet.h"
#import "CachedWeatherDataEntity.h"
@protocol WeatherDataCache <NSObject>
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (id<WeatherDataSet>) getData:(NSDate*)pDateTime;
- (void) saveDataArray:(NSMutableArray*)pDataArray;
- (void) saveData:(id<WeatherDataSet>)pData;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
@end
WeatherDataCacheImpl.h
#import <Foundation/Foundation.h>
#import "WeatherDataCache.h"
#import "WeatherDataSetImpl.h"
@interface WeatherDataCacheImpl : NSObject <WeatherDataCache> {
}
@end
WeatherDataCacheImpl.m +++ ここにエラーがあります +++
#import "WeatherDataCacheImpl.h"
#import "CachedWeatherDataEntity.h"
@implementation WeatherDataCacheImpl
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
- (id<WeatherDataSet>) getData:(NSDate*)pDateTime {
return nil;
}
- (void) saveDataArray:(NSMutableArray*)pDataArray {
double temp = 23.3;
double air = 95.0;
NSDate *myDate = [[NSDate alloc]init];
NSManagedObjectContext *context = [self managedObjectContext];
CachedWeatherDataEntity *CachedWeatherDataEntity = [NSEntityDescription
insertNewObjectForEntityForName:@"CachedWeatherDataEntity"
inManagedObjectContext:context];
CachedWeatherDataEntity.temperature = [NSNumber numberWithDouble:temp];
CachedWeatherDataEntity.airHumidity = [NSNumber numberWithDouble:air];
CachedWeatherDataEntity.dateTime = myDate;
NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
// Test listing all CachedWeatherDataEntitys from the store
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CachedWeatherDataEntity"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (CachedWeatherDataEntity *info in fetchedObjects) { <-----------Use of undeclared identifier 'info'
NSLog(@"temp: %@", info.temp);
NSLog(@"air: %@", info.air);
}
}