1

我在我的程序中创建了堆栈类,我想在其中存储 NSString 值。这是堆栈类:

@interface Stack : NSObject
- (void)push:(id)obj;
- (id)pop;
- (BOOL)isEmpty;
@end
@implementation Stack
{
    NSMutableArray *stack;
}
- (id)init
{
    self = [super init];   
    if(self!= nil){
        stack = [[NSMutableArray alloc] init];
    }
    return self;
}
- (void)push:(id)obj
{
    [stack addObject:obj];
}
- (id)pop
{
    id lastobj = [stack lastObject];
    [stack removeLastObject];
    return lastobj;
}
- (BOOL)isEmpty
{
    return stack.count == 0;
}
@end

我还有另一个名称为:TableViewController 我想何时单击 TableViewController 存储单元格中从 URL 接收的 id 中的单元格

这是我的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{
    // I want that xCode value with xCode2 value push in stack 

    NSLog(@"Row in Tab : %d",indexPath.row);

    if ([Folder containsObject:[All objectAtIndex:indexPath.row]]) {
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.%d/mamal/filemanager.php?dir=%@&folder=%d&id",IP,xCode,indexPath.row]];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        NSURLResponse *response = nil;
        NSError *err = nil;
        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
        NSString *responseString = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];
        xCode2 = responseString;          //this is new cell's id.I want to push this value in stack
        NSLog(@"xcode : %@", xCode2);

        [self performSegueWithIdentifier:@"segue4" sender:self];
    }

    else
    {
        [self performSegueWithIdentifier:@"segue3" sender:self];

    }
}  

在顶部代码中,我想何时单击单元格推送堆栈中的两个值(xCode 和 xCode2),但我不知道要使用堆栈。

4

2 回答 2

1
  1. 你需要一个保存你的堆栈的变量..我会让它成为一个成员变量:

    @implementation TableViewController {
        Stack *_stack;
    }
    ...
    
  2. 然后当单击单元格时,按下值

    ...
    if(!_stack)
        _stack = [[Stack alloc] init];
    [_stack push:xcode2];
    ... 
    
于 2013-04-18T12:30:40.427 回答
0

除了 Daij-Djan 的建议之外,请执行以下操作:

@interface Stack : NSMutableArray
- (void)push:(id)obj;
- (id)pop;
- (BOOL)isEmpty;
@end
@implementation Stack

- (id)init
{
    self = [super init];   
    if(self!= nil){
      // Perform any initialization here. If you don't then there is no point in implementing init at all. 
    }
    return self;
}
- (void)push:(id)obj
{
    [self addObject:obj];
}
- (id)pop
{
    id lastobj = [self lastObject];
    [self removeLastObject];
    return lastobj;
}
- (BOOL)isEmpty
{
    return [self count] == 0;
}
@end
于 2013-04-18T13:00:36.637 回答