Objective C 删除 NSMutableArray 中的最后一个 NSString

Objective C delete last NSString in NSMutableArray

我正在尝试从 NSMutableArray 中获取最后一个 NSString,如果它为空则将其删除。

这是我使用的代码:

- (void)viewWillAppear:(BOOL)animated {
    if ([notes.data length]==0){
        [storedText removeLastObject];
    }
    [self.tableView reloadData];
}

data 是 NSString,storedText 是 NSMutableArray。此代码删除 NSString,即使它不为空。如果它包含文本,我希望它保留字符串。

理想情况下,在将任何项目添加到 storedText 之前,您会检查它不是 nil 或空字符串,这样就不会有问题了。

否则,从 storedText 中获取最后一项并检查它(使用 isEqualToString: 或长度检查),如果匹配则将其删除。

你应该尝试这样的事情:

- (void)viewWillAppear:(BOOL)animated {
  if ([[[storedText lastObject] data] length]==0){
    [storedText removeLastObject];
  }
  [self.tableView reloadData];
}

顺便说一句,您假设 notes.datastoredText 中的最后一个对象是同一个字符串似乎是不正确的。这使我怀疑您的代码中还有其他类型的错误,您也应该调查这些错误。换句话说,您可以预期的是您的 notes.data 不正确——实际上,在从数组中删除最后一个对象后,您至少应该 "update" 它:

- (void)viewWillAppear:(BOOL)animated {
  if ([[[storedText lastObject] data] length]==0){
    [storedText removeLastObject];
    notes = [storedText lastObject]; //-- this will be the *new* last object after removal
  }
  [self.tableView reloadData];
}

但我不知道你用 notes.data 做了什么,所以我不知道这本身是否足以使它恢复与你的假设一致。

按照韦恩说的去做。这样做。

//total array size
int count = [storedText count];
int lastItemIndexInt = count - 1;

//get last object in array which is a string
NSString *str1 = [storedText objectAtIndex:lastItemIndexInt];

if ([str1 isEqualToString:@""] || [str1 length] < 1)
{
   //string is null / blank, remove it
   [storedText removeObjectAtIndex:lastItemIndexInt]; 
}