Итак, член проектной группы и я работали над нашими частями отдельно. Я работал над половиной представлений в приложении, а он работал над другой. Я послал ему свою половину, чтобы объединить с его половиной, но когда он попытался открыть мою половину и запустить ее, мы получили противоречивые результаты. Мы еще не объединили их, поэтому они не должны вести себя иначе. Я пытался протестировать его на нескольких других компьютерах, и все они дали одинаковый результат (отличный от моего).
Следующий код должен напечатать «CHECKED X». X представляет количество клеток, которые отмечены в этой точке. На моем компьютере выводится «ПРОВЕРЕНО 1..2..3..4», и вы можете выбрать только до 4, в зависимости от того, сколько отмечено. На любом другом компьютере он печатает «ПРОВЕРЕНО 0», и вы можете отметить столько, сколько хотите (но вы не можете снять галочку с них). Код для их отметки здесь:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if ((cell.accessoryType == UITableViewCellAccessoryNone) && [[DataContainerSingleton theDataContainerSingleton].favourites count] < 4 && ![self.tickedIndexPaths containsObject:indexPath])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.tickedIndexPaths addObject:indexPath];
[[DataContainerSingleton theDataContainerSingleton].favourites addObject:[drinks objectAtIndex:indexPath.row]]; // DOES NOT ADD AN OBJECT?
NSLog(@"CHECKED %d", [[DataContainerSingleton theDataContainerSingleton].favourites count]);
}
else if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
{
[self.tickedIndexPaths removeObject:indexPath];
for (int i = 0; i < [[DataContainerSingleton theDataContainerSingleton].favourites count]; i++)
{
NSString *drinkName = [[drinks objectAtIndex:indexPath.row] name];
NSString *favName = [[[DataContainerSingleton theDataContainerSingleton].favourites objectAtIndex:i] name];
if ([drinkName isEqualToString: favName])
{
cell.accessoryType = UITableViewCellAccessoryNone;
[[DataContainerSingleton theDataContainerSingleton].favourites removeObjectAtIndex:i];
NSLog(@"UNCHECKED %d", [[DataContainerSingleton theDataContainerSingleton].favourites count]);
}
}
}
}
Мне кажется, что массив избранного в моем контейнере данных синглтон не заполняется. Массив напитков не пустой.
Вот код для класса DataContainerSingleton:
DataContainerSingleton.h
#import <Foundation/Foundation.h>
@interface DataContainerSingleton : NSObject
{
NSMutableArray *favourites;
NSMutableArray *drinks;
NSString *name;
int caffeine;
@private
}
@property (nonatomic, retain) NSMutableArray *favourites;
@property (nonatomic, retain) NSMutableArray *drinks;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, assign) int caffeine;
+ (DataContainerSingleton *) theDataContainerSingleton;
@end
DataContainerSingleton.m
#import "DataContainerSingleton.h"
@implementation DataContainerSingleton
@synthesize favourites, drinks;
@synthesize name, caffeine;
static DataContainerSingleton* _theDataContainerSingleton = nil;
+ (DataContainerSingleton*) theDataContainerSingleton;
{
if (!_theDataContainerSingleton)
_theDataContainerSingleton = [[DataContainerSingleton alloc] init];
return _theDataContainerSingleton;
}
- (id)init
{
self = [super init];
if (self)
{
self.favourites = [[[NSMutableArray alloc] init] autorelease];
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
@end
Я проверил все зависимости в программе, ни одна из них не находится вне папки, которую я копирую. Я почистил и очистил папку сборки, но она по-прежнему печатает 0.
Кто-нибудь знает, что может быть причиной этого несоответствия? Заранее спасибо.