代码之家  ›  专栏  ›  技术社区  ›  Morrowless

KVC:如何在plist中保存UIKit结构?

  •  0
  • Morrowless  · 技术社区  · 14 年前

    <string>{{66, 114}, {64, 64}}</string> 手动转换为structs,但是如何以Cocoa KVC能够理解的方式在plist中保存CGPoint或CGRect?这个 Key-Value Coding Programming Guide 似乎表明我需要把它们保存为 NSValue s、 怎么做?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Peter Hosey    14 年前

    键值编码编程指南似乎指出我需要将它们保存为nsvalue。

    不,您需要一个NSValue来传递一个点或矩形 setValue:forKey: . KVC文档并没有讨论在任何地方保存值,因为这不是KVC的一部分。而且不能将NSValue保存在属性列表中,因为它不是 property list 班级。

    some of the functions in UIKit .

    这些实际上是核心图形结构,而不是UIKit(因此得名) 重心 点和 重心 Rect),所以您可能希望核心图形具有相应的函数。确实如此,但有一种不同的类型:在 CGGeometry ,核心图形提供了将CGPoints和cgrect与字典进行转换的函数。

    字符串或字典:这是你的选择。无论您选择哪个,它们都是属性列表,因此您可以将它们存储在属性列表输出中。

    create an NSValue with that 传递给 设置值:forKey: valueForKey: 将给您一个NSValue,您需要从中提取点或矩形以转换为字典或字符串以保存在plist中。