dictの通知から来ているのクラッシュ、NSMutableArrayのにオブジェクトを追加するアプリケーションをクラッシュさNSMutableArrayのそれを辞書からのNSDataを取り出して追加。
このクラッシュは、必ずしも起こっているとは限りません。
dictの通知から来ているのクラッシュ、NSMutableArrayのにオブジェクトを追加するアプリケーションをクラッシュさNSMutableArrayのそれを辞書からのNSDataを取り出して追加。
このクラッシュは、必ずしも起こっているとは限りません。
キャストする必要がない配列にデータを直接取得することができます。
if(self.RFTagData != nil){
self.RFTagData = [dict objectForKey:@"obj"];
}
NSLog(@"array %@", RFTagData);
これは、配列にすべてのデータをobj
キーの下に追加します。
更新:
ユーザーrmaddy & danhが示唆されているようなので、ここではvalueForKey
とobjectForKey
方法とnil check on the array
の使用に関するこの点の上の懸念を取る必要があります。
objectForKey
:これはNSDictionary
メソッドです。 NSDictionaryはNSArray
(コレクション)に似たコレクションクラスです。インデックスはNSArray
のようなものではなく、キーを使用して項目を区別します。キーとは、あなたが提供する任意の文字列です。 2つのオブジェクトが同じキーを持つことはできません(NSArray
内の2つのオブジェクトが同じインデックスを持つことはできません)。
valueForKey
:これはKVC方式です。これはANYクラスで動作します。 valueForKey:名前に文字列を使用してプロパティにアクセスできます。
ここでは両方とも指定されたキーに関連付けられた値を返します。ここではvalueForKey
メソッドを使用すると、回避策の解決方法が提供されます。しかし、このような場合には、objectForKey
を使用する方がより好ましい方法です。同一である配列内部null
値をチェックする
ではなく、次にリテラル@"<null>"
典型的ココアコレクションでnil
Sを表すために使用されるNSNull
オブジェクトのように見えます。
NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id value, NSDictionary *unused) {
return ![str isEqualToString:@"<null>"];
}];
NSArray *filteredAry = [self.RFTagData filteredArrayUsingPredicate:pred];
NSLog(@"array with non null vals %@", filteredAry);
たNSData *データ= [辞書のobjectForKey: "OBJ" @]あなたはNSArray's
filteredArrayUsingPredicate
メソッドを使用して、それらをフィルタリングすることができます。 [self.RFTagData addObject:data];
これを行うことでデータオブジェクトを直接追加することができます。文字列に変換する代わりに。
OPは文字列に間違ってキャストされますが、それだけではクラッシュは発生しません。実際、キャストはまったく何もしません。 – danh
答えに感謝しますが、クラッシュを解決していません –
オブジェクトを配列に追加するときに、NSDataをNSStringにキャストしないでください。NSDataをNSStringに変換してから配列に追加してください。 このNSDataをNSStringに使用し、NSStringを配列に追加する方が良い方法です。
NSData *data=[dict objectForKey:@"obj"];
NSString *strData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if(data != nil self.RFTagData != nil)
{
[self.RFTagData addObject:strData];
.....
}
これは、鋳造の主題に関する他の人と同様に、正しいですが、クラッシュの原因や救済策が示唆されていない限り、質問に対する答えはありません – danh
答えをありがとうしかし、それはクラッシュを解決していません –
データを文字列に変換して配列に追加したら、教えてください。コードを表示してください。私はあなたを手伝ってくれます。 – user3182143
なぜあなたはbtter方法で文字列に変換するのNSDataをいけませんか? NsstataをNsstringにキャストするのは正しい方法ではありません! –
@TejaNandamuriは、NSString * myString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; ' – Ludovic
@Mridulをイメージの代わりにここに追加して編集するだけです。 – vaibhav