iOSSafariブックマークシステムをコピーしようとしています。個々のブックマークが機能し、メインセットのフォルダが機能しています。他のフォルダに無制限のフォルダを作成できるように、作成のサポートが必要です。基本的に、私のコードは現在1つのフォルダーにしか保存できないため、メインフォルダー→フォルダー1→フォルダー2ですが、それを超えることはできません。フォルダ1を作成した後、アプリを終了して何かを保存する必要があります。Xcodeは私にこのエラーを与えます:
WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: <NSInternalInconsistencyException> -[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object
フォルダ辞書は次のようになります。
NSDictionary *NewFolderDict = @{
@"Title" : NewFolderTitle,
@"isFolder" : @YES ,
@"Bookmarks" : @[],
@"UUID" : [self uuidString]
};
Title
はエントリの名前、isFolder
はエントリがフォルダであるかどうか、ブックマークはブックマークまたはそれ以上のフォルダの配列であるかどうかです。
メイン全体NSArray
がにありNSUserDefaults
ます。
これが私が今フォルダを保存している方法です。このコードは、ユーザーがViewControllerのキーボードの完了ボタンを押したときに呼び出されます。
-(void)addDictionary:(NSDictionary *)FolderDictionary toFolder:(NSMutableDictionary*)toFolder {
NSMutableArray *bookmarks = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"bookmarks"]];
for (int i=0; i<[bookmarks count]; i++) {
NSMutableDictionary *Bookmark = (NSMutableDictionary *)[bookmarks objectAtIndex:i];
if ([[Bookmark objectForKey:@"isFolder"] boolValue] == YES) {
if ([[Bookmark objectForKey:@"UUID"] isEqualToString:[toFolder objectForKey:@"UUID"]]) {
NSLog(@"MATCH");
NSMutableArray *test = (NSMutableArray *)[Bookmark objectForKey:@"Bookmarks"];
[test addObject:FolderDictionary];
}
}
}
NSLog(@"%@",bookmarks);
[[NSUserDefaults standardUserDefaults] setObject:bookmarks forKey:@"bookmarks"];
[[NSUserDefaults standardUserDefaults] synchronize];
[bookmarks release];
}
これは、それがフォルダであるかどうか、および追加するのに適切なフォルダであるかどうかを確認するだけです。どうすれば100%動作させて保存し、10個のフォルダースタックのように、下に移動できるフォルダーの数に制限がないようにするにはどうすればよいですか?