• 2.7. 属性的各种设置选项(Core Data 应用程序实践指南)


      可供配置的选项根据属性类型的不同有所变化,并不是每一种属性都能配置下列选项

    • Transient:勾选该选项,表示该属性不写入“持久化存储区”,这听起来很奇怪,但有时候,只需要把特性留在托管对象上下文就行了。
    • Opitional:optional特性并不一定要有值。所有特性再刚创建的时候都是optional特性。如果某个特性不是optional特性,那么它在写入存储区的时候必须要具备有效的值才行。
    • Indexed:系统会优化Indexed特性以提高搜索效率,但是缺点是要在存储区占用更多的空间。并且这个空间的大小根据索引值的大小而定。
    • Validatioin:可以使用Validation中的各个选项来阻止不合理的数据存入持久化存储区。不同的数据类型都有各自不同的Validation选项。比如数值的最小值、最大值,Date的日期范围,String类型的字符串长度。无效的值可以出现在托管对象上下文中,只要在save:之前修改掉就好。一般来说,在控件失去焦点时进行验证。
    • Reg.Ex.:正则表达式(Regular Expression)的缩写。同样,托管对象中的值必须符合正则表达式才能存入持久区。
    • Default:除了可变类型和二进制类型数据外,其它类型都可以具有默认值。考虑到数据库处理null的方式,数值应该给定默认值,字符串要看情况,但是日期类型无法设置为now。
    • Allows External Storage:开启该选项之后,二进制数据可以存放在数据库外面。启用之后,Core Data会把数据量超过1M的属性值保留在SQLite持久化存储区之外。
    • Index in Spotlight:这个选项不会影响iOS程序,它的作用是把基于Core Data 的Mac应用程序同Spotlight集成起来。
    • Store in External Record File:启用该选项之后,系统会把持久化存储区里的数据复制成XML格式,并保存在存储区外。
    • Name:如果某个属性的类型为可变类型,那么名称这一栏中填写的名称将会用作NSValueTransformer子类的名称,而这个子类会知道如何在任意的类与NSData之间转换。

      下面来修改程序

    1. 勾选name属性的Indexed选项
    2. 将name属性的Default Value 设置为 New Item
    3. 将quantity属性的默认值设置为 1。
    4. 将listed属性的默认值设置为YES。
    5. 将collected属性的默认值设置为NO。
  • 相关阅读:
    指针、数组和结构体的一些思考
    Leetcode589.N-ary Tree Preorder TraversalN叉树的前序遍历
    Leetcode563.Binary Tree Tilt二叉树的坡度
    Leetcode559.Maximum Depth of N-ary TreeN叉树的最大深度
    Leetcode561.Array Partition I数组拆分1
    Leetcode551.Student Attendance Record I学生出勤记录1
    Leetcode543.Diameter of Binary Tree二叉树的直径
    Leetcode520Detect Capital检测大写字母
    Leetcode532.K-diff Pairs in an Array数组中的K-diff数对
    Leetcode496.Next Greater Element I下一个更大的元素1
  • 原文地址:https://www.cnblogs.com/SimonGao/p/4930573.html
Copyright © 2020-2023  润新知