Я обнаружил, что использование метода ЛиIII сработало, но при профилировании оказалось, что он был чрезвычайно медленным. Для разбора 1000 элементов потребовалось 15 секунд. Комментирование кода для добавления отношения превратило 15 секунд в 2 секунды.
Мой обходной путь (который быстрее, но гораздо уродливее) включает создание временного изменяемого массива, а затем копирование в упорядоченный набор, когда все анализ выполняется. (это только выигрыш в производительности, если вы собираетесь добавить много отношений).
@property (nonatomic, retain) NSMutableArray* tempItems;
....
@synthesize tempItems = _tempItems;
....
- (void) addItemsObject:(KDItem *)value
{
if (!_tempItems) {
self.tempItems = [NSMutableArray arrayWithCapacity:500];
}
[_tempItems addObject:value];
}
// Call this when you have added all the relationships
- (void) commitRelationships
{
if (_tempItems) {
self.items = [NSOrderedSet orderedSetWithArray:self.tempItems];
self.tempItems = nil;
}
}
Я надеюсь, что это поможет кому-то еще!
Если вам нужна поддержка от IE6 и выше, ответ такой: вы не можете использовать только css.
Существуют разные решения, чтобы действительно масштабировать div или просто сделать так, чтобы он выглядел так :
Существует опция ccs с очень большим отступом и столь же большим отрицательным полем, но я не помню, работает ли он для всех браузеров, и я не могу найти статью прямо сейчас.
Изменить: Решение css с большими отступами / отрицательными полями:
В статье говорится о Firefox 1.5 и Safari 2, поэтому я не знаю, работает ли он до сих пор, но вот он .
По моему опыту, установка высоты синего DIV на 100% не работает. Единственный раз, когда я хотел, чтобы это был синий DIV с его собственным фоном, чтобы решить эту проблему, вам нужно, чтобы фон серого DIV включал синий фон другого DIV.
JavaScript для этого будет ...
<div id="yourDiv" style="background-color: Blue; width: 150px;">
Hello
</div>
<script type="text/javascript">
var div = document.getElementById('yourDiv');
div.style.height = document.body.clientHeight + 'px';
</script>
Изменить:
Проверьте эту ссылку для получения clientHeight в разных браузерах ...
Внутри родительского div, если вы установите "float: right" в синем div и поиграете со своим ростом в процентах (height: 100%;), я думаю, вы должен достичь того, о чем вы просите.
Поскольку синий div является потомком вашего серого div, максимальная высота вашего синего div не должна превышать родительский div. Если я что-то здесь не упустил ...
Кроме того, если вы перемещаете синий div справа,
Другой способ установить высоту 100% в html-объектах - это использовать стили:
<html>
<head>
<style>
html, body {
height: 100%;
}
#mydiv {
height: 100%;
background-color:red;
}
</style>
</head>
<body>
<div id="mydiv">aaa</div>
</body>
</html>
Ключ должен иметь установленную высоту для родительского контейнера. Тогда высота: 100% работает
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Divs</title>
<style type="text/css" media="all">
#main {
height:30em;
width:30em;
background-color:#999999;
padding:1em 1em 0px 1em;
}
.inner {
width:5em;
}
#blue {
float:right;
background-color:#0000FF;
height:100%;
}
#magenta {
float:left;
background-color:magenta;
}
</style>
</head>
<body>
<div id="main">
<div class="inner" id="blue">
1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/>10
</div>
<div class="inner" id="magenta">
1<br/>2<br/>3<br/>4<br/>5<br/>6
</div>
</div>
</body>
</html>