Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
abrams2
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 15
#1

Хранение объектов в массиве - Objective-C

13.09.2014, 01:11. Просмотров 830. Ответов 4
Метки нет (Все метки)

Добрый вечер! Стоит задача: создать матрицу с задаваемыми размерами строки и столбца и провести над ней операцию. При выполнении задания возникли 2 непреодолимые задачи. Гугл перерыл (включая на инглише), маны читал, ничего не помогает.
Первый: можно ли создать массив из NSTextField'ов? По сути, тут надо объявить NSMutableArray из этих TextField'ов, но есть ли такая возможность? И как это должно выглядеть?
Второй: как создать текстовое поле без мышки? Ну то есть что надо написать? В гугле нашел вот это:

Objective-C
1
NSTextField *textf = [[NSTextField alloc] initWithFrame:CGRectMake(700, 350, 60, 100)];
Где соответственно задаются координаты и размеры, ок, я сунул это в IBAction и привязал к Button'у, но при нажатии на кнопку текстовое поле не создается. Я так понял надо addSubview применить, но как, если я создаю Cocoa application? Примеры находил только для iOS application. Простите, если чего-то очевидного не понимаю, но чет мозгов самому разобраться не хватает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2014, 01:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хранение объектов в массиве (Objective-C):

Хранение WEAK объектов в массиве - Objective-C
Иногда возникает ситуация хранить в массиве просто указатели на объекты, таким образом, чтобы счетчик их ссылок при таком хранении не...

Хранение изображений - Objective-C
Может кто-нибудь привести пример кода записи изображения на диск iPhone и загрузки с него, пожалуйста :P

Хранение введенных данных - Программирование iOS
Подскажите, пожалуйста, как хранить данные, чтобы доступ к ним можно было получить из любого класса приложения? Например, в приложении...

Хранение данных в plist - Программирование iOS
привет. требуется хранить список факультетов, для каждого факультета хранить список специализаций, для каждой специализации хранить...

Хранение голосовых записей - Программирование iOS
Доброго времени суток. Появилась необходимость записывать аудио-файлы и в последствии потом их воспроизвести. По сути должно...

Хранение данных в пользовательской папке Documents - Программирование iOS
Привет. Возник такой вопрос. Моё приложение скачивает ролики большого обьема(400 - 700 мб) я храню их в Documents. Вопрос -...

4
EvilYarik
-6 / 3 / 0
Регистрация: 18.07.2012
Сообщений: 49
14.09.2014, 00:27 #2
NSMutableArray хранит любые NSObject

Objective-C
1
2
3
4
5
NSMutableArray *array = [[NSMutableArray alloc] init]; // или initWithCapacity:SomeArraySize
 
[array addObject:tf0];
[array addObject:tf1];
[array addObject:tf2];
запрос такой
Objective-C
1
NSTextField *tf = [array objectAtIndex:SomeArrayIndex];
на тему матрицы это наверное не про NSMutableArray
тут проще создать саб NSTextField c атрибумати col и row

если массивчик не большой тут можно и for пройтись
Objective-C
1
2
3
4
5
6
for (NSArrayTextField *atf in array) {
     if (atf.com == y and atf.row == x) {
          *SomeCode*
          break;
     }
}
1
abrams2
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 15
15.09.2014, 18:34  [ТС] #3
Благодарю, но за 3 часа до вашего ответа нашел решение сам, в буржуйском гугле

Только вот обращение к элементам массива не работает - поле заполнено, но все равно intValue равен нулю. Есть другое решение проблемы? Ниже прилагаю код?
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#import "PSAppDelegate.h"
 
@implementation PSAppDelegate
 
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
}
 
-(IBAction)Build:(id)sender
{
    k=textFieldOfLength.intValue;
    m=textFieldOfHeight.intValue;
    
    int z=k*m;
    int x,y;
    x=0;
    y=0;
    int count =0;
    for(int i=0;i<z;i++)
    {
        NSTextField *textFieldTmp = [[NSTextField alloc] initWithFrame: NSMakeRect(x,y,40,20)];
        [arrayOfObjects1 addObject:textFieldTmp];
        [self.window.contentView addSubview:textFieldTmp];
        x+=43;
        count++;
        if (count==k)
        {
            count=0;
            y+=23;
            x=0;
        }
    }
}
 
-(IBAction)Run:(id)sender
{
    int x=k*43+100;
    int y=0;
    factor=textFieldOfFactor.intValue;
    int tmp1,tmp2;
    
    int count=0;
    
    for (int i=0;i<k*m;i++)
    {
        NSTextField *textFieldTmp1 = [[NSTextField alloc] init];
        textFieldTmp1=[arrayOfObjects1 objectAtIndex:i];
        tmp1=textFieldTmp1.intValue;
        // tmp1=[arrayOfObjects1 objectAtIndex:i].intValue;
        
        tmp2=factor*tmp1;
        NSTextField *textFieldTmp2 = [[NSTextField alloc] initWithFrame: NSMakeRect(x,y,40,20)];
        [arrayOfObjects2 addObject:textFieldTmp2];
        x+=43;
        count++;
        if (count==k)
        {
            count=0;
            y+=23;
            x=k*43+100;
        }
        [textFieldTmp2 setIntValue:tmp2];
        [self.window.contentView addSubview:textFieldTmp2];
        
        
 
    }
    
}
 
@end
0
abrams2
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 15
17.09.2014, 19:26  [ТС] #4
И вновь я прошу прощения у всех, забыл память под массив выделить
[NSMutableArray new]; все решили

Теперь мне б способ очистить экран от созданных текстфилдов
Как это реализовать?? Тупо удалить массив? А как это можно сделать? Или приравнять его к нилу?
0
EvilYarik
-6 / 3 / 0
Регистрация: 18.07.2012
Сообщений: 49
19.09.2014, 20:55 #5
удаление nsмассива ничего не решит сам nsмассив nsобъекты не хранит, только ссылки на них, нужно пройти по всем элементам массива а потом очистить его

Objective-C
1
2
3
4
5
for (NSTextField *tf in array) {
     *удаляеш tf*
}
[array removeAllObjects];
*удаляеш array*
соответственно обьект может храница сразу в двух или более NSMutableArray

П.С.
когда хочешь удалить конкретный объект
не делай это внутри фора самого массива
Objective-C
1
2
3
4
5
6
7
8
for (NSTextField *tf in array) {
     [arroy removeObject:tf];
}
//или
for (int i = 0; i < array.count; i++) {
     NSTextField *tf = [array objectAtIndex:i];
     [arroy removeObject:tf];
}
создавай отдельный массив
Objective-C
1
2
3
4
5
6
7
8
9
10
NSMutableArray *arrayremove = [[NSMutableArray alloc] init];
for (NSTextField *tf in array) {
     if (ObjForDelete) [arrayremove addObject:tf];
}
for (NSTextField *tf in arrayremove) {
     [arroy removeObject:tf];
     * удаляеш tf*
}
[arrayremove removeAllObjects];
*удаляеш arrayremove*
оту при выкидывании элемента счетик фора ломается, nsмассив динамически смещает элементы
0
19.09.2014, 20:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2014, 20:55
Привет! Вот еще темы с ответами:

Насколько рационально хранение изображений в CoreData - Программирование iOS
Всем привет! Подскажите, насколько рационально хранить большие изображения напрямую в одном из аттрибутов Entity? С одной стороны...

Двухмерные массивы. Создание,изменение,хранение - Objective-C
Доброго времени суток! Сразу извиняюсь если задам глупые вопросы. Пытаюсь разобраться с ООП. Передо мной стоит следующая задача ...

Хранение объектов - Java
Подскажите где можно хранить объекты? У меня есть допустим класс с тремя полями...создаю объект...записываю данные в поля а потом нужно...

Хранение объектов - Java SE
Хочу написать программу которая бы считала мой &quot;капитал)&quot;... вот пример public class Payment { private static double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru