簡體   English   中英

目標 C - 如何檢查 NSMutableArray 的所有元素 (NSMutableString) 是否都有值?

[英]Objective C - How check if all elements (NSMutableString) of NSMutableArray has a value?

我將用戶的答案存儲在數組的 NSMutableString 元素中。 當數組的所有元素都具有值並且用戶將完成問題時,我想顯示一個彈出窗口(調用 popGoResultsAlert),我在互聯網上搜索但沒有成功找到解決方案。

這是我的代碼:

在頭等艙

 [UserData updateUserAnswerValues:[userData objectForKey:@"userAnswerValues"]];

//第二類,userData.m的一部分

static NSMutableArray *userAnswerValues;

+ (NSMutableArray *)getAnswersCompleted {

    return userAnswerValues;
}

+ (void)updateUserAnswerValues:(NSArray *)newAnswerValues
{
    userAnswerValues = [[NSMutableArray alloc] init];
    [userAnswerValues addObjectsFromArray:newAnswerValues];
}




+ (void)updateUserAnswerValueWithIndex:(NSUInteger)index andValue:(NSMutableString*)value
{
    [userAnswerValues setObject:value atIndexedSubscript:index];
}

在第三類:

- (void)viewWillAppear:(BOOL)animated
{
    NSMutableArray *userAnswerValues = [UserData getAnswersCompleted];

    for (int i=0; i<userAnswerValues.count; i++) {

        id object = userAnswerValues[i];// similar to [myArray objectAtIndex:0]

        if(object && [object length] !=0  && i!=0)
    {
         [self popGoResultsAlert];
        break;

    } else if (!object) {
        continue;
    }

    }

}

編輯://4th class ,這里似乎原始數據根據用戶從 PickerView 選擇的內容填充到 userAnswerValues,該索引具有值並且該值由 selectedOptionValue 變量放置......我已經調試了 userAnswerValues 並注意到該值有 56 個元素,如 userAnswerValues = ( "", "", "", "", "", "", "", "", 4, 3, 4, 3, "", ...(用,"" 直到 56 個項目> , "" ); 所以每當用戶在 PickerView 中選擇一個值時,上述元素之一用索引號填充,所以我的問題是如何搜索這些可變數組並查看是否所有項目都有價值。 ..

   NSUInteger index = [self.currentQuestion.index integerValue];
    [UserData updateUserAnswerWithIndex:index andValue:self.selectedOptionIndex];
    Option *selectedOption = [self.currentOptions objectAtIndex:[self.selectedOptionIndex integerValue]];
    NSString *selectedOptionValue = selectedOption.value;
    [UserData updateUserAnswerValueWithIndex:index andValue:selectedOptionValue];

問題的 3 部分將所有答案的值存儲在一個相同的數組中。 使用上面的代碼,每當 3 個部分中的每一個完成時都會彈出警報,我的意圖是它只會在所有 3 個部分完成時才顯示彈出......

我有測試[object length] !=0 , ![object isEqual:[NSNull null]] , ![object isEqualToString:@""]沒有運氣,所有 3 有相同的行為(在每個部分后顯示彈出完全的 ,

這些項目不是我從頭開始編寫的,所以我試圖調試和修復它的一些錯誤,當我調試 userAnswerValues 時,我看到 NSMutableArray 的項目在不同的元素類型中有不同的類型,正如你看到的第 32 項是 _NSFConstantString值為空,而第 33 項是 NSTagedPointerString...請參閱附件了解更多詳情。

調試快照

我認為您需要的與之前的答案非常相似。 在這里,我將轉換為您的數據名稱。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    BOOL showPopup = YES;    // Assume success
    NSMutableArray *userAnswerValues = [UserData getAnswersCompleted];

    // Try to go all the way through the array without finding an empty string
    for (int i = 0; i < userAnswerValues.count; i++) {
        id object = userAnswerValues[i];
        if ([object length] == 0) {
            showPopup = NO;  // Something is not filled in
            break;
        }
    }
    if (showPopup) {
        [self popGoResultsAlert];
    }
}
Bool nilBool = 0;
for (int i = 0 ; i < yourArray.count; i ++)
{
      NSString *value = [yourArray ObjectAtIndex:i];

      if([value isEqual: @""] || value == nil)
      {
          nilBool = 1;
      }
}

if(nilBool)
{
     //one if your values is nil!
}
else
{
    //all values are filled, you are good to go
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM