Сохраните NSmutableArray в файл и загрузите - PullRequest
2 голосов
/ 19 июня 2010

я написал приложение для своего iphone и хочу сохранить NSmutablearray в файл и загрузить его позже. я читал о NSArchiver, но не понимал, как работать с мой кальс:

@interface Shop : NSObject 
{    
    NSString       *m_Name;
    NSString       *m_Description;
    NSString       *m_Category;
    NSString       *m_BestSaleDesc;
    NSString       *m_AdditionalInfo;   
    NSInteger       m_ShopId;
    NSInteger       m_ChainId;
    NSMutableArray *m_SalesList;
    NSData         *m_Icon;
    bool            m_Filtered;
    bool            m_Deleted;
    bool            m_Hidden;
}

Может ли кто-нибудь дать мне пример кода, как сохранить NSmutableArray класса calss Shop в имя файла ShopFile.sav и затем как загрузить его снова в объект NSmutableArray.
Большое спасибо

Ответы [ 2 ]

7 голосов
/ 19 июня 2010

РЕДАКТИРОВАТЬ: переделал всю вещь.
Сохранение:

NSMutableDictionary *saveDict = [NSMutableDictionary dictionary];
[saveDict setValue:m_Name forKey:@"m_Name"];
[saveDict setValue:m_Description forKey:@"m_Description"];
[saveDict setValue:m_Category forKey:@"m_Category"];
[saveDict setValue:m_BestSaleDesc forKey:@"m_BestSaleDesc"];
[saveDict setValue:m_AdditionalInfo forKey:@"m_AdditionalInfo"];
[saveDict setValue:[NSNumber numberWithInt:m_ShopId] forKey:@"m_ShopId"];
[saveDict setValue:[NSNumber numberWithInt:m_ChainId] forKey:@"m_ChainId"];
[saveDict setValue:m_SalesList forKey:@"m_SalesList"];
[saveDict setValue:m_Icon forKey:@"m_Icon"];
[saveDict setValue:[NSNumber numberWithBool:m_Filtered] forKey:@"m_Filtered"];
[saveDict setValue:[NSNumber numberWithBool:m_Deleted] forKey:@"m_Deleted"];
[saveDict setValue:[NSNumber numberWithBool:m_Hidden] forKey:@"m_Hidden"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingString:@"/ShopFile.sav"];
[saveDict writeToFile:filePath atomically:YES];

Загрузка:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingString:@"/ShopFile.sav"];
NSDictionary *loadDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
m_Name =            [loadDict valueForKey:@"m_Name"];
m_Description =     [loadDict valueForKey:@"m_Description"];
m_Category =        [loadDict valueForKey:@"m_Category"];
m_BestSaleDesc =    [loadDict valueForKey:@"m_BestSaleDesc"];
m_AdditionalInfo =  [loadDict valueForKey:@"m_AdditionalInfo"];
m_ShopId =         [[loadDict valueForKey:@"m_ShopId"] intValue];
m_ChainID =        [[loadDict valueForKey:@"m_ChainId"] intValue];
m_SalesList =       [loadDict valueForKey:@"m_SalesList"];
m_Icon =            [loadDict valueForKey:@"m_Icon"];
m_Filtered =       [[loadDict valueForKey:@"m_Filtered"] boolValue];
m_Deleted =        [[loadDict valueForKey:@"m_Deleted"] boolValue];
m_Hidden =         [[loadDict valueForKey:@"m_Hidden"] boolValue];

Должно работать лучше;)

0 голосов
/ 19 июня 2010

Почему бы не использовать Core Data? Основные данные

...