您好我正在尝试为我的浏览器制作书签。 页面标题,页面网址,与页面相关的任何评论。
我尝试将其保存在plist
中,但未成功。任何人都可以帮助我将这些东西保存到plist并在表格视图中进行检索。因此,当用户点击标题时,它会在UIWebView
中打开网址。
到目前为止,这是我尝试过的代码:
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"bookmarks.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"bookmarks" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error]; //6
}
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
NSString *writeUrl = @"Page URL One";
NSString *writeTitle = @"Page Title One";
NSString *writeComment = @"Page comments";
[data setObject:[NSString stringWithString:writeUrl] forKey:@"url"];
[data setObject:[NSString stringWithString:writeTitle] forKey:@"title"];
[data setObject:[NSString stringWithString:writeComment] forKey:@"comment"];
[data writeToFile: path atomically:YES];
NSMutableDictionary *savedUrl = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
NSString *value;
value = [[savedUrl objectForKey:@"url"] stringValue];
NSLog(@"%@", value);
更新:我成功保存并从plist中检索数据。问题出现在这一行
value = [[savedUrl objectForKey:@"url"] stringValue];
通过删除stringValue来解决问题。
value = [savedUrl objectForKey:@"url"];
现在我的第二个问题。我在plist文件中创建了三个名为url,title,comment,types的类型的项目。 我如何存储不同的网址。喜欢
名称网站:inforains 网址:inforains.com 标题:Info Rains 评论:好的网站文章
名称网站:hitechnology 网址:hitechnology.com 标题:Hitechnology 评论:嗯......
ans soo on ..
如何存储这样的数据..所以所有名称网站都会在tableview上显示,当用户点击任何人时,将显示与该网站相关的数据。我希望我清楚我的问题。
答案 0 :(得分:2)
将多个记录存储为plist文件中名为url,title,comment,types的三个项目 将类型从字符串更改为字典,并将每个字典中的数据单独存储为1,2,3 ... 要么 对每个url,title和comment使用三个可变数组,并在保存时在索引0处添加对象。 并在需要时作为nsmutable数组访问它们。
答案 1 :(得分:1)
你确定[data writeToFile:path atomically:YES];作品?它返回一个BOOL,你应该检查一下。 你确定savedURL!= nil?
答案 2 :(得分:1)
更改此行
value = [[savedStock objectForKey:@"url"] stringValue];
到
value = [savedUrl objectForKey:@"url"];
因为你在字典中保存NSString ...而不是NSNumber。
第二期:
//create mutable array to save all objects
NSMutableArray *objectsArray = [data objectForKey:@"objectsArray"];
if(!objectsArray) {
objectsArray = [[NSMutableArray alloc] init];
}
//create and add dictionary into array
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:@"url1", @"title1", @"comment2",nil] forKeys:[NSArray arrayWithObjects:@"url", @"title", @"comment",nil]];
[objectsArray addObject:dictionary];
[data setObject:objectsArray forKey:@"objectsArray"];
[data writeToFile: path atomically:YES];
// to read data
NSMutableDictionary *savedUrl = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
NSMutableArray *objectsArraySAved = [savedUrl objectForKey:@"objectsArray"];
for (NSMutableDictionary *dic in objectsArraySAved) {
NSLog(@"URL %@", [dic valueForKey:@"url"]);
}
答案 3 :(得分:1)
对于您的新问题,您应该将所有词典放在一个可变数组中。
NSMutableArray *bookmarkArray = [[NSMutableArray alloc]init];
[bookmarkArray addObject:data];