1

总的来说,我是 Objective C 和 iOS 开发的新手,所以如果我错过了一些需要包含的信息,请告诉我,我会尽力而为。同时,如果我的任何假设是不正确的,或者如果我把它设置得完全愚蠢,请不要犹豫,对我大喊大叫。谢谢!

我有一个名为feeds. 这是我在 .h 文件中初始化它的方式:

@interface ClassViewController : ContentViewController <UITableViewDelegate,
UITableViewDataSource> {
    NSMutableArray *feeds;
}
@property (nonatomic, strong) NSMutableArray* feeds;

在 .m 中:

@dynamic feeds;

我正在尝试从 JSON 获取结果并将它们加载到feeds. 让我们假设其中resArr有正确的数据:

NSArray *resArr = [results objectForKey:@"data"];

if([self->feeds count]) {
    [self->feeds removeAllObjects];
    [self->feeds addObjectsFromArray:resArr];
 }
 else {
     self->feeds = [[NSMutableArray alloc] initWithArray:resArr];
 }

现在,这第一次工作正常(即,我第一次将数据放入数组中),但随后出现以下错误:*** -[NSMutableArray addObjectsFromArray:]: array argument is not an NSArray

我一无所知。有任何想法吗?

编辑:JSON结构

1:

{"code":200,"data":[{"name":"ABM"},{"name":"ACC"}]}

2:

{"code":200,"data":{"100":{"subject":"ABM","title":"Decision Making in Agri-Food"},"130":{"subject":"ABM","title":"Farm Management I"}}}
4

1 回答 1

1

您应该使用 self.feeds 而不是 self->feeds,这是一个很好的阅读点(“.”)运算符和箭头(“->”)运算符在 C 与 Objective-C 中的使用

你确定后面的时间实际上是 NSArrays 吗?

编辑添加

看起来第一个 JSon 只是一个名称数组,而第二个是一个以 100、200 等为键的字典。因此 JSON 将其转换为一个以 100、200 为键的字典...

NSArray* resArr = [results objectForKey:@"data"];

if([self.feeds count]) {
    [self.feeds removeAllObjects];
    if([resArr isKindOfClass:[NSDictionary class]])
       [self.feeds addObjectsFromArray:resArr.allValues];
    else
       [self.feeds addObjectsFromArray:resArr];
 }
 else {
     self.feeds = [[NSMutableArray alloc] initWithArray:resArr];
 }
于 2012-12-07T15:27:33.150 回答