答案 0 :(得分:0)
您可以直接获取数据到阵列,无需强制转换。
if(self.RFTagData != nil){
self.RFTagData = [dict objectForKey:@"obj"];
}
NSLog(@"array %@", RFTagData);
这会将所有数据添加到obj
键下的数组中。
<强>更新强>
作为用户rmaddy&amp; danh建议,所以这里需要关注使用valueForKey
和objectForKey
方法以及nil check on the array
的这一点。
objectForKey
:这是NSDictionary
方法。 NSDictionary是一个类似于NSArray
(集合)的集合类,除了使用像NSArray
这样的索引之外,它使用键来区分项目。键是您提供的任意字符串。没有两个对象可以具有相同的密钥(就像NSArray
中没有两个对象可以具有相同的索引一样)。
valueForKey
:这是一种KVC方法。它适用于任何类。 valueForKey:允许您使用字符串作为其名称来访问属性。
这里两者都返回与给定键关联的值,因此这里使用valueForKey
方法为您提供了解决方法。但使用objectForKey
是更优选的使用方法在这种情况下。
检查数组中的null
值是否与文字@"<null>"
完全相同,而不是NSNull
对象通常用于表示Cocoa集合中的nil
。您可以使用NSArray's
filteredArrayUsingPredicate
方法将其过滤掉:
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);
答案 1 :(得分:0)
NSData * data = [dict objectForKey:@“obj”]; [self.RFTagData addObject:data];
您可以直接添加数据对象。而不是转换为字符串。
答案 2 :(得分:0)
在将对象添加到数组中时,不要将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];
.....
}