下面的代码从Category1 Category2 Category3 Category4
No change Presentation Changed
No change Scroll Changed
获取值,从对象获取值,然后将它们添加到另一个NSMutableArray
中以供使用。我需要做的是为NSMutableArray
中的每一项添加新行,但是崩溃了:
[__ NSSingleObjectArrayI length]:无法识别的选择器已发送到实例
如果我注释掉NSMutableArray *options
中的代码并只留下for (int i = 0; i < options.count; i++)
,它将显示正确的值。有什么想法吗?
NSLog(@"FIELD)
答案 0 :(得分:0)
您的数组中的对象很可能根本不是NSString,它们是包含NSString的NSArray。尝试在objectAtIndex调用后停止在调试器中并打印[field class]
答案 1 :(得分:0)
这并不是真正的答案,而只是为了帮助您调试。 NSLog非常有助于调试代码。在这些行中添加以下NSLog,并亲自查看其内容。
NSMutableArray *options = [[NSMutableArray alloc] init];
for (NSDictionary *item in self.surveydata) {
NSString *addressfield = [item objectForKey:@"address_option"];
NSLog("addressfield :%@",addressfield); // HERE
[options addObject:addressfield];
}
NSLog("options:%@",options);// HERE
for (int i = 0; i < options.count; i++) {
NSString *field = [options objectAtIndex:i];
LFFormRowTextField *rowTextField = [LFFormRowTextField new];
rowTextField.key = @"name";
[rowTextField addValue:field forSEL:@selector(setPlaceholder:)];
[sectionLabel addRow:rowTextField];
NSLog(@"FIELD: %@", field);
}
您的代码有一些陷阱。例如,如果addressfield不返回NSString而是返回NULL或NSNumber或其他?优良作法是始终在分配对象之前检查从objectForKey返回的对象的类型。除非您可以保证数据仅包含字符串。如果来自第三方Web API, 那么我几乎可以说各种垃圾都将被发送出去。 :D 祝你好运。