2016-05-27 5 views
0

配列のNSMutableString要素の中にユーザーの回答を格納します。私はポップアップ(popGoResultsAlertを呼び出す)の配列の要素のすべてが値を持っていると、ユーザーが質問を完了すると、私はインターネット上で検索するが、その解決策を見つけることに成功しなかった。ここ目的C - NSMutableArrayのすべての要素(NSMutableString)に値がありますか?

は私のコードです:最初のクラスで

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

// 2番目のクラス、第三クラスの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; 
    } 

    } 

} 

編集: //ここでは、4番目のクラスは、起点データがuserAnswerValuesベースに、PickerViewからどのピックアップを選んだか、そのインデックスに値があり、その値がselectedOptionValue変数によって設定されているようです...私はuserAnswerValuesをデバッグして、 userAnswerValues =( ""、 ""、 ""、 ""、 ""、 ""、4,3,4,3、 ""、...の残りの部分を入力してください。 ""まで56項目>、 ""); ので、ユーザは、私の質問は、これらの可変配列を検索し、すべての項目が値を持っているかどうかを確認する方法であるので、上記の要素のPickerView 1の値は、インデックス番号を記入選択したときに...

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をデバッグすると、 Item 32thは空の値を持つ_NSFConstantStringですが、Item 33thはNSTagedPointerStringです。詳細は添付ファイルを参照してください。

私はあなたが必要だと思う何

Debug snapshots

+0

i == lastObject [これは配列の終わりであることが分かりますか?]を確認し、show alertを入力します。 – user3344236

+0

FYI - 'object'は' nil'にすることはできません。それがあるかどうかを確認する必要はありません。 – rmaddy

+0

@ user3344236私が知っている限り、配列の項目は、質問の3つのセクションがあるため、3つのセクションの値がすべて同じ配列に格納されるため、ユーザーは3番目のセクションを最初に選択する可能性があります答えは、最後のオブジェクトが完了するかもしれませんが、最初と2番目のセクションは空ですので、この場合、配列のすべての項目に値があるときだけ、ポップアップを表示したくありません... – Jack

答えて

-1
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 
} 
+0

それは何であるはずですか? OPにはまったく答えられません。 – holex

+0

Bashir、あなたのコードを試してみました。NSString * value = [yourArray ObjectAtIndex:i];私のNSMutableArrayを置き換えるとき、私はあなたのコードでコンパイルエラーがあると言います。いいえVisible @interface for 'NsMutableArray'はセレクタobjectAtIndexを宣言します。 – Jack

+0

これはxcodeなしでこれを書いています、構文はthis [yourArray objectAtIndex:0]のようです。 –

0

は前の回答と非常によく似ています。ここでは、私はあなたのデータ名に翻訳します。

関連する問題