Я сохраняю массивы двойников в объекте NSData *, который сохраняется как двоичное свойство в модели данных Core Data (SQLite). Я делаю это для хранения выборочных данных для построения графиков в приложении для iPhone. Иногда, когда в двоичном объекте более 300 двойников, не все двойники сохраняются на диск. Когда я выхожу и перезапускаю свое приложение, может сохраняться всего 25 точек данных или целых 300.
Использование NSSQLitePragmasOption с синхронным = FULL, и это может иметь значение. Трудно сказать, так как ошибка временная.
Учитывая предупреждения о проблемах с производительностью в результате использования synchronous = FULL, мне нужен совет и указатели.
Спасибо.
[[Изменить: вот код]]
(Пока нереализованная) цель -addToCache: добавить каждую новую базу данных в кеш, но только периодически сбрасывать (сбой?) Объект данных.
Из Data.m
@dynamic dataSet; // NSData * attribute of Data entity - (void) addDatum:(double_t)datum { DLog(@"-[Data addDatum:%f]", datum); [self addToCache:datum]; } - (void) addToCache:(double_t)datum { if (cache == nil) { cache = [NSMutableData dataWithData:[self dataSet]]; [cache retain]; } [cache appendBytes:&datum length:sizeof(double_t)]; DLog(@"-[Data addToCache:%f] ... [cache length] = %d; cache = %p", datum, [cache length], cache); [self flushCache]; } - (void) wrapup { DLog(@"-[Data wrapup]"); [self flushCache]; [cache release]; cache = nil; DLog(@"[self isFault] = %@", [self isFault] ? @"YES" : @"NO"); // [self isFault] is always NO. } - (void) flushCache { DLog(@"flushing cache to store"); [self setDataSet:cache]; DLog(@"-[Data flushCache:] [[self dataSet] length] = %d", [[self dataSet] length]); } - (double*) bytes { return (double*)[[self dataSet] bytes]; } - (NSInteger) count { return [[self dataSet] length]/sizeof(double); } - (void) dump { ALog(@"Dump Data"); NSInteger numDataPoints = [self count]; double *data = (double*)[self bytes]; ALog(@"numDataPoints = %d", numDataPoints); for (int i = 0; i