0

こんにちは私は私のブラウザのブックマークを作成しようとしています。ページのタイトル、ページのURL、ページに関連するコメント。

保存しようとしましたplistが、失敗しました。誰かが私がこれらのものを保存してテーブルビューでplistおよびretriveするのを手伝ってくれますか?したがって、ユーザーがタイトルをタップすると、でURLが開き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"];

今私の2番目の問題。plistファイルにurl、title、comment、typesStringという名前の3つのアイテムを作成します。異なるURLを保存するにはどうすればよいですか。好き

名前のウェブサイト:inforains url:inforains.comタイトル:Info Rainsコメント:良いウェブサイトの記事

名前のウェブサイト:hitechnology URL:hitechnology.comタイトル:Hitechnologyコメント:うーん

ans soo on ..

このようなデータを保存するにはどうすればよいですか。すべての名前のWebサイトがテーブルビューに表示され、ユーザーが誰かをクリックすると、そのWebサイトに関連するデータが表示されます。質問をクリアしたいと思います。

4

4 に答える 4

2

複数のレコードをurl、title、comment、typesという名前の3つのアイテムとして保存するにはplistファイルの文字列の種類を文字列から辞書に変更し、各辞書のデータを1、2、3としてキーごとに個別に保存します...またはそれぞれに3つの可変配列を使用しますurl、title、commentを追加し、保存時にインデックス0にオブジェクトを追加します。必要に応じて、nsmutable配列としてそれらにアクセスします。

于 2013-01-22T13:35:34.937 に答える
1

この行を変更します

value = [[savedStock objectForKey:@"url"] stringValue];

value = [savedUrl objectForKey:@"url"];

NSStringを辞書に保存しているからです...NSNumberではありません。

2番目の問題:

//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"]);
}
于 2013-01-22T12:39:20.910 に答える
1

よろしいですか[データwriteToFile:パスアトミック:YES]; 動作しますか?BOOLを返しますので、確認してください。確かにsavedURL!= nil?

于 2013-01-22T12:29:17.933 に答える
1

新しい問題については、すべての辞書を可変配列に配置する必要があります。

NSMutableArray *bookmarkArray = [[NSMutableArray alloc]init];
[bookmarkArray addObject:data];
于 2013-01-22T13:22:27.420 に答える