我有一个需要连接和接收数据的应用程序,每次单击一个选项卡时都会有所不同。 然后为了向用户显示数据,我使用“element.plist”,其中我有一个字典数组(每个字典都有不同字符串的信息:名称,类别,......)。我从这个plist加载信息。
我希望继续使用相同的结构。每次我收到连接数据:
我不能做的第二步。
感谢
答案 0 :(得分:0)
我不确定我完全理解你的问题, 但我会尽力帮忙。
下面是一些苹果示例代码,可以在应用程序退出时保存plist。
第二行设置plist文件的名称:
NSString * bundlePath =应用程序目录+“数据”
第三行定义了一个字典,其中包含要保存的所有数据:
NSDictionary * plistDict
第四行将此字典格式化为属性列表数据:
NSData * plistData
然后保存为Data.plist
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
NSString *errorDesc;
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects: personName, phoneNumbers, nil]
forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
format:NSPropertyListXMLFormat_v1_0
errorDescription:&errorDesc];
if (plistData)
{
[plistData writeToFile:bundlePath atomically:YES];
}
else {
NSLog(errorDesc);
[errorDesc release];
}
return NSTerminateNow;
}
您可以在“属性列表编程指南”
中找到此信息答案 1 :(得分:0)
嵋,
我不确定我理解你关于有一个空的plist的陈述。我假设你的意思是,如果你回读你创建的plist文件,当你打印它时它是null。建议你写出一个空文件或不读正确或......
我进一步假设你的意图是用一个新的plist替换现有的plist内容,同时保持相同的名称。
并且警告我 - 我是Objective C等的新手。这是一种方法,我认为你正在努力做到这一点。
// Implement viewDidLoad to do additional setup after loading the view,
// typically from a nib.
- (void)viewDidLoad {
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"TmpPList" ofType:@"plist"]; //Not NARC
//NSLog(@"plistPath : %@", plistPath);
//My plist is a simple array, but it could be an array of dictionary objects etc
NSMutableArray *arrayFromPList = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; //NARC
//NSLog(@"arrayFromPList : %@", arrayFromPList);
//Delete the arrays contents and put new contents
[arrayFromPList removeAllObjects];
//NSLog(@"arrayFromPList : %@", arrayFromPList);
//[arrayFromPList addObjectsFromArray:[NSArray arrayWithObjects:@"A", @"B", "@C", nil]];
//NSLog(@"arrayFromPList : %@", arrayFromPList);
[arrayFromPList setArray:[NSMutableArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", nil]];
//NSLog(@"arrayFromPList : %@", arrayFromPList);
/* */
//Write it out to the original file name
[arrayFromPList writeToFile:plistPath atomically:YES];
NSMutableArray *newArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; //NARC
NSLog(@"newArray : %@", newArray);
[arrayFromPList release];
[newArray release];
}