钳子和连接

时间:2009-07-17 22:00:01

标签: objective-c iphone-sdk-3.0

我有一个需要连接和接收数据的应用程序,每次单击一个选项卡时都会有所不同。 然后为了向用户显示数据,我使用“element.plist”,其中我有一个字典数组(每个字典都有不同字符串的信息:名称,类别,......)。我从这个plist加载信息。

我希望继续使用相同的结构。每次我收到连接数据:

  1. 删除plist中的内容
  2. 保存新内容(我可以在解析器方法中执行此操作,每次我有一个包含所有信息的对象)
  3. 阅读我现在正在做的信息。
  4. 我不能做的第二步。

    感谢

2 个答案:

答案 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];    
}