阅读写作plist Iphone

Tob*_*ias 1 xml iphone xcode objective-c plist

我已经看到了很多关于此的问题,但似乎无法找到符合我需求的问题.

我有一个看起来像这样的plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Content</key>
    <array>
        <dict>
            <key>dateAdd</key>
            <date>2011-03-23T14:40:47Z</date>
            <key>content</key>
            <string>Content first</string>
            <key>Title</key>
            <string>Title 1</string>
        </dict>
        <dict>
            <key>dateAdd</key>
            <date>2011-03-23T14:40:47Z</date>
            <key>content</key>
            <string>Content here</string>
            <key>Title</key>
            <string>Title 2</string>
        </dict>
    </array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

我像这样从plist中获取信息

在头等舱

//points to the plist
    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSString *url = [path stringByAppendingPathComponent:@"Details.plist"];

    //filling with contents of plist
    NSDictionary *Data = [[NSDictionary alloc] initWithContentsOfFile:url];
    self.contentData = Data;
    [Data release];
Run Code Online (Sandbox Code Playgroud)

在第二个类中,我创建了这个类的实例并获取信息

Petite_NotesAppDelegate *instance = (Petite_NotesAppDelegate *)[[UIApplication sharedApplication] delegate];

self.dataArray = [instance.contentData objectForKey:@"Content"];
Run Code Online (Sandbox Code Playgroud)

这样就可以像这样从plist中获取内容

NSDictionary *Content = [self.dataArray objectAtIndex:indexPath.row];
    cell.textLabel.text = [Content objectForKey:@"Title"];
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法写信给plist

由于我想写的内容是plist数组内容,然后是项目0项目1等.我将如何写入plist中的内容数组?让我说我想写一个文本字段的内容......

谢谢你的帮助!!

cla*_*woo 7

问题是您可能正在尝试写入您从中读取的同一文件.恐怕这是不可能的-你是从阅读应用程序包这是只读的.如果要将更改保存到磁盘,则需要将字典写入位于Documents目录中的plist .

要获取Documents目录的路径,您需要执行以下操作(还有其他方法可以执行此操作):

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

// you will read and write to this path
NSString *url = [documentsDirectory stringByAppendingPathComponent:@"Details.plist"];
Run Code Online (Sandbox Code Playgroud)

这也意味着当您启动应用程序时,您应该检查您的Documents目录中是否存在Details.plist文件,如果存在,则从中读取,否则返回读取应用程序包.