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

Работа с NSArray, NSString - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Получение координат раз в n минут в бэкграунде. Get location every n minute in background http://www.cyberforum.ru/objective-c/thread1491220.html
Всем привет! Как получать координаты раз в n минут и так, чтобы это работало еще и в бэкграунде ? Может кто-то реализовывал подобное и есть опыт ? Буду благодарен за советы! Вот несколько...
Objective-C Объясните простые вещи) Всем привет! Я занимаюсь андроид разработкой в основном и тут так случилось, что нужно сделать порт на ios7-8 приложения.. Сел разбираться XCode+obj c. Немного непонятны такие вещи: В сторибоард... http://www.cyberforum.ru/objective-c/thread1490216.html
Ошибка no known class method for selector Objective-C
- (void)animate:(UILabel*)label { ; ; ; ; label.alpha = 1.0; ; } Нужно в селекторе вызвать метод hide c параметром label, как это реализовать?
Objective-C Контроллер не ловит событие нажатия
Добрый день! Инициализирую контроллер в AppDelegate. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ; self.window = ...
Objective-C Метод touchesBegan в UIViewController http://www.cyberforum.ru/objective-c/thread1486424.html
Добрый день! Подскажите, а метод - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event непосредственно в контроллере можно написать? Или только в UIView?
Objective-C Не понимаю ошибки и что требует программа #import <Cocoa/Cocoa.h> @interface AppDelegate : NSObject <NSApplicationDelegate> @property (assign) IBOutlet NSWindow *window; @end { выдает ошибку "... подробнее

Показать сообщение отдельно
SeRG1k17
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9

Работа с NSArray, NSString - Objective-C

08.07.2015, 19:47. Просмотров 885. Ответов 6
Метки (Все метки)

Вообщем программа довольно простая: Есть AddressBook которая хранит название и массив, каждым элементом которого является AddressCard.
В задании было сказано:
1)изменить метод lookup, так чтобы он искал частичное совпадение по имени - ОК.
2)изменить метод lookup, так чтобы он искал все соответствия по имени и возвращал массив -ОК.
3)добавить метод -(BOOL)removeNameNSstring *) theName;
Если имя не найдено или существует несколько записей метод должен возвращать NO. Если же 1 значение найдено, удалить его - возвратить YES.
Удаление целиком name and email я сделал, но я хочу просто очищать одно из полей.
Делал так создал массив, запустил для него lookup, он нашел количество записей, проверил количество.
Нашел индекс в массиве book через вспомогательный массив, в котором содержится "очищаемое" поле.
Теперь хочу сделать так
[[[book objectAtIndex:theInt]name] setString: @""];
Но XCode даже не видит этого метода, мол name это немутабельная строка.

Сделал все массивы и строки мутабельными -ничего не изменилось.
Мои предположения по проблеме:
-требуется наследование
-требуются методы доступа(синтезируемые методы)

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#import <Foundation/Foundation.h>
 
@interface AddressCard : NSObject
{
    NSMutableString *name;
    NSMutableString *email;
}
@property(copy,nonatomic) NSString *name,*email;
 
-(void)setName: (NSString *) theName;
-(void)setEmail:(NSString *) theEmail;
-(void)setName: (NSString *) theName andEmail: (NSString *) theEmail;
-(BOOL)isEqual:(AddressCard *)theCard;
-(NSComparisonResult)compareNames:(id)element;
-(void)print;
 
@end
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
#import "AddressCard.h"
 
@implementation AddressCard
 
@synthesize name,email;
 
-(void)setName:(NSString *) theName
{
    name=[[NSMutableString alloc]initWithString: theName];
}
-(void)setEmail:(NSString *)theEmail
{
    email=[[NSMutableString alloc]initWithString:theEmail];
}
-(void)setName:(NSString *)theName andEmail:(NSString *)theEmail
{
    self.name=theName;
    self.email=theEmail;
}
-(BOOL)isEqual:(AddressCard *)theCard
{
    if ([name isEqualToString:theCard.name]==YES &&
        [email isEqualToString:theCard.email]==YES) {
        return YES;
    }
    else
        return NO;
}
-(NSComparisonResult)compareNames:(id)element
{
    return [name compare:[element name]];
}
-(void)print
{
    NSLog(@"==============================================");
    NSLog(@"|                                             ");
    NSLog(@"|   %-31s |",[name UTF8String]);
    NSLog(@"|   %-31s |",[email UTF8String]);
    NSLog(@"|                                             ");
    NSLog(@"|                                             ");
    NSLog(@"|                                             ");
    NSLog(@"|                                             ");
    NSLog(@"|         0                    0              ");
    NSLog(@"==============================================");
}
 
@end
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#import <Foundation/Foundation.h>
#import "AddressCard.h"
 
@interface AddressBook : NSObject
{
    NSMutableString *bookName;
    NSMutableArray *book;
}
-(id)initWithName:(NSString *) name;
-(void)addCard:(AddressCard *) theCard;
-(NSMutableArray *)lookup:(NSString *)theName;
-(void)removeCard:(AddressCard *)theCard;
-(BOOL)removeName:(NSString *)theName;
-(int) entries;
-(void)sort;
-(void)list;
 
@end
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
73
74
#import <Foundation/Foundation.h>
#import "AddressBook.h"
#import "AddressCard.h"
 
@implementation AddressBook
 
-(id)initWithName:(NSString *)name
{
    self=[super init];
    if (self) {
        bookName=[[NSMutableString alloc]initWithString:name];
        book=[[NSMutableArray alloc]init];
    }
    return self;
}
-(void)addCard:(AddressCard *)theCard
{
    [book addObject:theCard];
}
-(NSMutableArray *)lookup:(NSString *)theName
{
    NSMutableArray *theArray=[NSMutableArray arrayWithCapacity:1];
    NSRange subRange;
    
    for (AddressCard *nextCard in book) {
        subRange=[[[nextCard name] uppercaseString] rangeOfString:[theName uppercaseString]];
        if (subRange.location!=NSNotFound ) {
            [theArray addObject:nextCard];
        }
    }
    return theArray;
}
-(void)removeCard:(AddressCard *)theCard
{
    [book removeObjectIdenticalTo:theCard];
}
-(BOOL)removeName:(NSString *)theName
{
    NSMutableArray *theArray;
    theArray=[self lookup:theName];
    if ([theArray count]>1) {
        return NO;
    }
    else if ([theArray count]==0)
        return NO;
    else
    {
        unsigned long theInt=[book indexOfObject:[theArray objectAtIndex:0]];
        NSLog(@"Number %li and name %@",theInt,[[book objectAtIndex:theInt]name]);
        //[[[book objectAtIndex:theInt]name] setString: @""];
 
        return YES;
    }
}
-(int)entries
{
    return (int)[book count];
}
-(void)sort
{
    [book sortedArrayUsingSelector:@selector(compareNames:)];
}
-(void)list
{
    NSLog(@"============Contents of: %@ =================",bookName);
    
    for (AddressCard *theCard in book) {
        NSLog(@"%-20s   %-32s",[theCard.name UTF8String],[theCard.email UTF8String]);
    }
    NSLog(@"=========================================================");
}
 
 
@end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.