【问题标题】:How do I use the writeToFile method on an NSMutableDictionary?如何在 NSMutableDictionary 上使用 writeToFile 方法?
【发布时间】:2011-09-19 23:59:52
【问题描述】:

我想对 NSMutableDictionary 对象使用仅适用于 NSDictionary 的方法 (writeToFile)。那么,如何将这个 NSMutableDictionary 对象转换为 NSDictionary?

【问题讨论】:

    标签: iphone ios ios4 nsdictionary nsmutabledictionary


    【解决方案1】:

    NSMutableDictionary 继承自 NSDictionary。所以,writeToFile 应该对两个类都可用。

    【讨论】:

      【解决方案2】:

      对于那些真正想要从 NSMutableDictionary 转换为 NSDictionary 的人:

      NSMutableDictionary *mutableDict = [[[NSDictionary alloc] initWithObjectsAndKeys:
                                    @"value", @"key"] mutableCopy];
      
      NSDictionary *dict = [NSDictionary dictionaryWithDictionary:mutableDict]; //there you have it
      

      【讨论】:

        【解决方案3】:

        NSMutableDictionary 是 NSDictionary 的子类,因此 writeToFile 方法应该可用于您的对象,而无需进行任何转换或转换。

        【讨论】:

          【解决方案4】:

          这里已经讨论过:

          How to save a NSMutableDictionary into a file in documents?

          你不需要转换它。

          但如果你真的想要,只需在NSMutableDictionary 上使用copy 方法或在NSDictionary 上使用dictionaryWithDictionary: 方法。两者都提供来自NSMutableDictionaryNSDictionary

          【讨论】:

            【解决方案5】:

            A NSMutableDictionary NSDictionary 因为它是一个子类。通常,子类与其超类的关系称为:“is a”。

            【讨论】:

              【解决方案6】:

              要解决实际问题的标题而不是内容(因为我搜索了这个 Q),您实际上可以依靠 copyWithZone: 来获取不可变字典。

              NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] init];
              mutableDict[@"key"] = @"value";
              NSDictionary *immutableDict = [mutableDict copy];
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-11-30
                • 1970-01-01
                • 2015-05-07
                • 1970-01-01
                • 2014-10-22
                • 1970-01-01
                相关资源
                最近更新 更多