【问题标题】:Updating contents of class variable NSMutableArray更新类变量 NSMutableArray 的内容
【发布时间】:2012-12-07 15:21:29
【问题描述】:

我是 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不是 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"}}}

【问题讨论】:

    标签: objective-c ios nsmutablearray


    【解决方案1】:

    你应该使用 self.feeds 而不是 self->feeds,这是一个很好的阅读 Dot (“.”) operator and arrow (“->”) operator use in C vs. 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];
     }
    

    【讨论】:

    • 感谢文献。我很肯定resArr 被正确填充。我不确定如何NSLog 一个数组,但我是NSLogging JSON 字符串,它与正确插入数组的第一个结果格式完全相同。
    • 你可以nslog它的类型/内容type NSLog(@"Class: %@ Conents: %@", [resArr class], resArr);
    • 奇数。第一个结果是JKArray 类型,第二个是JKDictionary 类型。让我附加返回的 JSON 的结构,也许问题就在那里。
    • 看起来第一个 JSON 只是一个名称数组,而第二个是一个以 100、200 等为键的字典。因此 JSON 将其转换为以 100、200 为键的字典。 ..
    • 好的,谢谢。如果您不介意,请告诉我如何在给定该结构的情况下将其转换为NSArray 类型?我知道这超出了问题的范围,但它会有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2019-05-02
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多