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.data
与 storedText
中的最后一个对象是同一个字符串似乎是不正确的。这使我怀疑您的代码中还有其他类型的错误,您也应该调查这些错误。换句话说,您可以预期的是您的 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];
}
我正在尝试从 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.data
与 storedText
中的最后一个对象是同一个字符串似乎是不正确的。这使我怀疑您的代码中还有其他类型的错误,您也应该调查这些错误。换句话说,您可以预期的是您的 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];
}