당신은 개체 암소가 NSCoding 프로토콜을 준수 할 수 있습니다 :
//Cow.h file
@interface Cow : NSObject <NSCoding>
@property(nonatomic, copy) NSString *someString;
@end
//Cow.m
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
_someString = [aDecoder decodeObjectForKey:@"someString"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.someString forKey:@"someString"];
}
그리고 그 후 당신은 (당신이 암소 개체의 배열을 생성하고 파일에 저장할 수 있습니다) 파일로 저장할 수 있습니다 :
를
NSrray *data = @[cow1, cow2, cow3];
[NSKeyedArchiver archiveRootObject:data toFile:[self pathToFile]];
그리고 당신은 그런 식으로 읽을 수는 :
NSFileManager* fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:[self pathToData]])
{
NSData *data = [NSData dataWithContentsOfFile:[self pathToData]];
NSMutableArray *dataArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
// dataArray -> array with your data
}
는 다행스럽게도 필자는 당신의 질문을 이해했다.
// EDITED
가져 오기 경로에 파일을
-(NSString*)pathToData
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MyData"];
NSFileManager* fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:filePath])
{
[fileManager createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:nil];
}
return [filePath stringByAppendingPathComponent:@"mydata.plist"];
}
저장 및 제거 데이터 :
-(BOOL)save
{
NSMutableArray *data = [self cachedDataFromFile];
if (!data)
{
NSLog(@"data = nil");
data = [NSMutableArray arrayWithArray:@[self]];
}
else
[data addObject:self];
return [NSKeyedArchiver archiveRootObject:data toFile:[self pathToData]];
}
-(void)removeFromFile
{
NSMutableArray *data = [self cachedDataFromFile];
if (!data)
return;
else
{
[data removeObject:self];
[NSKeyedArchiver archiveRootObject:data toFile:[self pathToData]];
}
}
-(NSMutableArray*)cachedDataFromFile
{
NSFileManager* fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:[self pathToData]])
{
NSData *data = [NSData dataWithContentsOfFile:[self pathToData]];
NSMutableArray *dataArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
return dataArray;
}
return nil;
}
가 알려줘은 당신을 위해 일이다.
obj-c 언어에 대해 더 자세히 읽어야한다고 생각합니다. 어쨌든 시도해보십시오 : Cow * cow = [[Cow alloc] initWithString : @ "cowName"]; Cow * cow2 = [[Cow alloc] initWithString : @ "secondCowName"]; –
나는 그것을 의미하지는 않았다. 죄송합니다. 내가 원했던 것은 내가 원하는 데이터를 선택하는 db와 같은 것입니다. – hcarreras