你可以讓你的對象母牛符合一個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語言。無論如何嘗試:牛*牛= [[牛分配] initWithString:@「cowName」]; Cow * cow2 = [[Cow alloc] initWithString:@「secondCowName」]; –
我不是那個意思。抱歉。我想要的就像是一個數據庫,我選擇我想要的數據。 – hcarreras