我正在尝试将 plist 加载到 UITableView 中。我是使用 pLists 和 tableViews 的新手,但我知道我需要使用这些方面的东西。我的问题是虽然“filePath”在哪里,但我实际上不知道如何放入我的 pList?
list = [NSArray arrayWithContentsOfFile:filePath];
除了获取文件路径之外,任何其他有关如何执行此操作的代码建议将不胜感激。比如我需要在我的 .h 文件中放任何东西吗?谢谢。
我正在尝试将 plist 加载到 UITableView 中。我是使用 pLists 和 tableViews 的新手,但我知道我需要使用这些方面的东西。我的问题是虽然“filePath”在哪里,但我实际上不知道如何放入我的 pList?
list = [NSArray arrayWithContentsOfFile:filePath];
除了获取文件路径之外,任何其他有关如何执行此操作的代码建议将不胜感激。比如我需要在我的 .h 文件中放任何东西吗?谢谢。
假设您已经在项目中添加了 .plist,我创建了一个可以添加到项目中的类,该类将获取信息并将信息保存到给定的 .plist。它是一个正常工作的单例,所以你可以从任何地方调用它。
首先,创建一个名为“GetAndSaveData”的新 NSObject 文件,然后将以下代码发布到 .h 中:
@interface GetAndSaveData : NSObject{
NSMutableDictionary *allData;
NSString *path;
}
+(GetAndSaveData *)sharedGetAndSave;
-(NSMutableArray *)arrayForKey:(NSString *)dataList;
-(void)setData:(NSMutableArray *)array ForKey:(NSString *)dataList;
@end
并将以下代码放入.m:
static GetAndSaveData *sharedGetAndSave;
@implementation GetAndSaveData
-(id)init{
self = [super init];
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0];
path = [documentsDirectory stringByAppendingPathComponent:@"data.plist"];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
}
allData = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
return self;
}
-(NSMutableArray *)arrayForKey:(NSString *)dataList{
NSMutableArray *array = [allData objectForKey:dataList];
return array;
}
-(void)setData:(NSMutableArray *)array ForKey:(NSString *)dataList{
[allData setObject:array forKey:dataList];
[allData writeToFile:path atomically:YES];
if(![allData writeToFile:path atomically:YES])
{
NSLog(@".plist writing was unsuccessful");
}
}
+(GetAndSaveData *)sharedGetAndSave{
if (!sharedGetAndSave) {
sharedGetAndSave = [[GetAndSaveData alloc] init];
}
return sharedGetAndSave;
}
+(id)allocWithZone:(NSZone *)zone{
if (!sharedGetAndSave) {
sharedGetAndSave = [super allocWithZone:zone];
return sharedGetAndSave;
} else {
return nil;
}
}
-(id)copyWithZone:(NSZone *)zone{
return self;
}
@end
您可以更改函数以获取和保存不同类型的数据。您可以通过导入 .h 文件并执行以下操作在视图控制器中使用它:
myMutableArray = [[GetAndSaveData sharedGetAndSave]arrayForKey:myKey];