我的目标是在此类中创建一个收藏夹数组,并在用户单击收藏夹按钮时将它们添加到数组中。我的问题是for循环没有发生,意味着[arrayOfFavs count]
= 0.我第一次理解这个,但是在我添加一个对象后,为什么计数不会增加而for循环发生? / p>
-(IBAction)favbutton
{
bool *isThereAlready = true;
NSLog(@"start for loop");
for(int i = 0; i < [arrayOfFavs count]; i++)//problem here
{
if ([stateName isEqualToString: [[arrayOfFavs objectAtIndex:i] objectAtIndex:0]])
{
isThereAlready = false;
NSLog(@"sent to else");
}
NSLog(@"objects in arrayofStateFavs");
}
if(isThereAlready)
{
[checkedButton setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
NSArray *favArray = [NSArray arrayWithObjects:stateName,phoneName,faxName,addressName, nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"favState"
object:favArray];
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTableViewNotification"
object:self];
[arrayOfFavs addObject:favArray];
}
else //unfavorite
{
[checkedButton setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
NSArray *favDetails = [NSArray arrayWithObjects:stateName,phoneName,faxName,addressName, nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"unfavState"
object:favDetails];
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTableViewNotification"
object:self];
for(int i = 0; i < [arrayOfFavs count]; i++)
{
if ([stateName isEqualToString: [[arrayOfFavs objectAtIndex:i] objectAtIndex:0]])
{
[arrayOfFavs removeObject:[arrayOfFavs objectAtIndex:i]];
i--;
}
}
}
}
编辑:这与标记为重复的问题不同:数组已初始化且for循环仅循环一次或根本不循环。
编辑2: 这是我初始化数组的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Set the Label text with the selected state
stateLabel.text = stateName;
phoneLabel.text = phoneName;
faxLabel.text = faxName;
addressLabel.text = addressName;
plistNum = [NSString stringWithFormat:@"tel:%@",phoneName];
arrayOfFavs = [[NSMutableArray alloc] init];//for this class
}
答案 0 :(得分:0)
在您分享初始化阵列的代码之前,我们无法真正假设您是。请仔细检查您是否真正创建了NSArray
。请记住,在obj-c中,您可以向nil
对象发送消息。
你需要这样的东西:
arrayOfFavs = @[];
答案 1 :(得分:0)
这可能是你的问题:
bool *isThereAlready = true;
编译器警告这是不正确的代码。您正在使用int初始化指针。尝试删除*
并查看是否有效。
- 更多 -
您是否意识到以下代码不会向arrayOfFavs
添加四个项目?
NSArray *favArray = [NSArray arrayWithObjects:stateName,phoneName,faxName,addressName, nil];
[arrayOfFavs addObject:favArray];
相反,它只添加一个项目,而一个项目是一个包含四个项目的数组。如果这是故意的,我强烈建议你创建一个包含四个NSStrings的课程,而不是你如何拥有它。