【问题标题】:I could not get the values from NSDictionary in Model class?我无法从 Model 类中的 NSDictionary 获取值?
【发布时间】:2016-09-19 19:19:06
【问题描述】:

在我的 iPhone 应用中。

问题:当我试图从模型类中的字典中获取值时,它给了我 nil 值。

为什么会这样,这是内存管理问题吗?

我这样做了,

我将 NSDictionary 从我的 viewController 传递到 NSMutableArray 类别,然后我将它传递给我的 Modelclass。

如果你想看编码,

  1. 在我的 ViewController.m 文件中

    [arrayNews convertToNewsArticles];

  2. 在我的 NSMutableArray 类别中,我正在调用方法 convertToNewsArticles。

    for(NSMutableDictionary *dictionary in self) {

          NewsArticle *newsArticle=[[NewsArticle alloc] initWithDictionary:dictionary];
            [arrayConverted addObject:newsArticle];
    
        }
    

我说的是我正在传递的这本字典。

  1. 这是我的模型类

    -(NewsArticle*)initWithDictionary:dictionary{

    self.title=dictionary[@"title"];
    
    self.author=dictionary[@"author"];
    
    
    self.urlString=dictionary[@"url"];
    
    
    return self;
    

    }

更新:

我通过使用 GitHub 上的 IAModelBase 类解决了。IAModelBase

【问题讨论】:

  • 您的自定义对象在哪里?
  • 为什么要继承 NSMutableArray?您正在更改 initWithArray 的语义。该代码属于其他地方;可能在获取新闻文章的对象中,但如果您坚持这样做,您只需说 [self addObject:newsArticle] 您是否阅读过 NSMutableArray 类参考中的 Subclassing notes
  • 我支持@Paulw11。您的代码设计完全错误。这个问题也有经典的XY problem,所以请描述你想要达到的目标而不是你是如何做到的!
  • 自定义对象,我做了一个类,加了属性,加了initWithDictionary方法?
  • @Paulw11,Marek R,是的,我对此表示怀疑。所以,我犹豫不决。在那之前我会问如何设计自定义对象模型类。等我的更新。请。

标签: ios objective-c objective-c-category


【解决方案1】:

如果它是NSMutableArray 的子类,那么您可以添加类似的对象,

  [self addObject:newsArticle];

在您的 for 循环中,return self 将返回您的最终可变数组,您可以根据需要使用它!

有关详细信息,请参阅Apple documentation。如果你想subclassNSMutableArray,你必须实现一些强制方法。

【讨论】:

  • 问题是我无法将 NSDictionary 传递给我的模型类。当我试图从模型类中的字典中获取值时,它给了我 nil 值。请参阅我更新的问题,否则我会按照您的建议进行操作。
【解决方案2】:

当我试图将 NSDictionary 对象转换为模型对象时。 我无法将整个字典传递给 Model 类。就像问题中提到的那样。

但我使用的是, IAModel classes

阅读自述文件。 另见第一个问题,它已解决。 Pull Issue

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多