Я новичок в разработке для iOS.Я написал небольшое приложение, которое сохраняет массив NSMutableArray
с моими объектами, полученными из NSObject
.Приложение выполняет сохранение, но файл не создается в каталоге документов и приложение не может прочитать.эта проблема есть и на симуляторе, и на моем iPhone 3gs 4.2.1
My NSMutableArray
определение в классе appDelegate
:
@property (nonatomic,retain, readwrite) NSMutableArray *places;
Мой класс NSObject:
#import <Foundation/Foundation.h>
@interface Place : NSObject {
NSString *name;
NSString *location;
}
-(id) init:(NSString *)name: (NSString *)location;
@property (retain,nonatomic,readwrite) NSString *name;
@property (retain,nonatomic,readwrite) NSString *location;
@end
Мой класс библиотеки StorageService:
#import "StorageService.h"
@implementation StorageService
-(id) init {
self = [super init];
if (self != nil) {
}
return self;
}
-(void) saveArrayToFile:(NSString*) filename : (NSMutableArray *)arrayToSave{
// get full path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fullPath = [paths objectAtIndex:0];
fullPath = [fullPath stringByAppendingPathComponent:filename];
NSLog(@"Save in %@",fullPath);
[arrayToSave writeToFile:fullPath atomically:YES];
}
-(NSMutableArray*) readArrayFromFile:(NSString *)filename {
// get full path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fullPath = [paths objectAtIndex:0];
fullPath = [fullPath stringByAppendingPathComponent:filename];
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) {
NSMutableArray *data = [[NSMutableArray alloc] initWithContentsOfFile:fullPath];
if (data == nil) {
data = [[NSMutableArray alloc] init];
}
NSLog(@"Read from %@",fullPath);
return data;
} else {
NSMutableArray *data = [[NSMutableArray alloc] initWithContentsOfFile:fullPath];
return data;
}
}
-(void) dealloc {
[super dealloc];
}
@end
и Мои функции в appDelegate
:
-(void) saveApplicationData {
[self.storageService saveArrayToFile : PLACES_FILE : self.places];
}
-(void) loadApplicationData {
self.places = [self.storageService readArrayFromFile:PLACES_FILE];
}
Вот мой класс, который содержит константу имени файла:
#import <Foundation/Foundation.h>
extern NSString * const PLACES_FILE = @"Places.dat";
@interface ApplicationConstants : NSObject {
}
@end
Так что не так?
Спасибо, ребята.