Привет, ребята, я пытаюсь создать базу данных, которая отображает NSStrings в int. Я имею в классе под названием Movie.h, где каждый объект имеет имя и номер, присвоенный:Проблемы с массивом типа class
//Movie.h
@interface Movie : NSObject
{
int m_num;
NSString *m_name;
}
@property int m_num;
@property(nonatomic, retain) NSString *m_name;
@end
//Movie.m
@implementation Movie
@synthesize m_num, m_name;
@end
я тогда еще один класс называется Map, где я реализующий функции, чтобы играть с моим «Фильмы». Одна из функций называется insert, и она вставляет объект класса movie в массив, где должны храниться все фильмы. Код компилируется, но мой «m_array», похоже, не ведет запись того, что я добавляю к нему. Вот код:
//Map.h
#import "Movie.h"
@interface Map : NSObject
{
@private
int m_count;
NSMutableArray *m_array;
}
@property int m_count;
@property(nonatomic, retain) NSMutableArray *m_array;
-(bool) contain: (NSString *) name;
-(bool) insert: (NSString *) name: (int) chap;
@end
//Map.m
@implementation Map
@synthesize m_count, m_array;
//Constructor
-(id) init{
if (self = [super init]){
m_count = 0;
}
return self;
}
-(bool) contain: (NSString *) name{
bool b = false;
for (int i = 0; i < m_count; i++) {
Movie *m = [[Movie alloc]init];
m = [m_array objectAtIndex:i];
NSLog(@"%@ came out in %i", m.m_name, m.m_num);
if (m.m_name == name) {
b = true;
}
}
return b;
}
-(bool) insert:(NSString *) name: (int) chap{
Movie *m1 = [[Movie alloc]init];
m1.m_name = name;
m1.m_num = chap;
[m_array addObject:m1];
NSLog(@"Here is the object %@",[m_array objectAtIndex:m_count]);
m_count++;
return true;
}
@end
-(bool) upgrade:(NSString *)name :(int)chap{
if(![self contain:name])
return false;
for (int i = 0; i < m_count; i++){
Movie *m = [[Movie alloc]init];
m = [m_array objectAtIndex:i];
if(m.m_name == name)
m.m_num = chap;
}
return true;
}
Вот мой главный:
//main.m
#import "Map.h"
int main (int argc, const char * argv[])
{
@autoreleasepool
{
Map *m = [[Map alloc]init];
[m insert:@"James Bond" :2001];
if (![m contain:@"James Bond"]) {
NSLog(@"It does not work");
}
}
return 0;
}
Вот консольный вывод:
2012-02-27 14:20:04.923 myMap[3926:707] Here is the object (null)
2012-02-27 14:20:05.036 myMap[3926:707] (null) came out in 0
2012-02-27 14:20:05.037 myMap[3926:707] It does not work
Почему у вас есть переменная 'm_count'? Просто используйте метод 'count' массива. –
О, ты прав. Я делаю это, потому что я уже закончил этот класс на C++, я просто переписываю код в объективе-C. – solalito