首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Cocoa中将自定义对象写入.plist

在Cocoa中,将自定义对象写入.plist文件需要遵循以下步骤:

  1. 创建一个自定义对象,该对象需要遵循NSCoding协议,以便可以将其序列化为数据并将其写入.plist文件。
代码语言:swift
复制
import Foundation

class CustomObject: NSObject, NSCoding {
    var property1: String
    var property2: Int

    init(property1: String, property2: Int) {
        self.property1 = property1
        self.property2 = property2
    }

    required init?(coder aDecoder: NSCoder) {
        self.property1 = aDecoder.decodeObject(forKey: "property1") as? String ?? ""
        self.property2 = aDecoder.decodeInteger(forKey: "property2")
    }

    func encode(with aCoder: NSCoder) {
        aCoder.encode(property1, forKey: "property1")
        aCoder.encode(property2, forKey: "property2")
    }
}
  1. 创建一个.plist文件,并将其添加到项目中。
  2. 将自定义对象写入.plist文件。
代码语言:swift
复制
func writeCustomObjectToPlist(customObject: CustomObject, plistName: String) {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = paths[0]
    let path = documentsDirectory + "/\(plistName)"
    let fileManager = FileManager.default

    if !fileManager.fileExists(atPath: path) {
        let bundle = Bundle.main
        let plistPath = bundle.path(forResource: plistName, ofType: "plist")!
        try! fileManager.copyItem(atPath: plistPath, toPath: path)
    }

    let data = NSMutableData(contentsOfFile: path)!
    let archiver = NSKeyedArchiver(forWritingWith: data)
    archiver.encode(customObject, forKey: "customObject")
    archiver.finishEncoding()
    data.write(toFile: path, atomically: true)
}
  1. 从.plist文件中读取自定义对象。
代码语言:swift
复制
func readCustomObjectFromPlist(plistName: String) -> CustomObject? {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = paths[0]
    let path = documentsDirectory + "/\(plistName)"
    let fileManager = FileManager.default

    if !fileManager.fileExists(atPath: path) {
        return nil
    }

    let data = NSData(contentsOfFile: path)!
    let unarchiver = NSKeyedUnarchiver(forReadingWith: data as Data)
    let customObject = unarchiver.decodeObject(forKey: "customObject") as? CustomObject
    unarchiver.finishDecoding()

    return customObject
}

这样,您就可以将自定义对象写入.plist文件并从中读取它们了。请注意,这些示例使用Swift编写,但您可以根据需要将其转换为Objective-C代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

HashMap中将可变对象用作Key,需要注意什么?

本文中我们将会讨论Java HashMap中将可变对象用作Key。所有的Java程序员可能都在自己的编程经历中多次用过HashMap。那什么是HashMap呢?...内容 什么是可变对象 HashMap如何存储键值对 HashMap中使用可变对象作为Key带来的问题 如何解决 1、什么是可变对象 可变对象是指创建后自身状态能改变的对象。...换句话说,可变对象是该对象创建后它的哈希值可能被改变。 在下面的代码中,对象MutableKey的键创建时变量 i=10 j=20,哈希值是1291。...如果Key对象是可变的,那么Key的哈希值就可能改变。HashMap中可变对象作为Key会造成数据丢失。 下面的例子将会向你展示HashMap中有可变对象作为Key带来的问题。...如果可变对象HashMap中被用作键,那就要小心改变对象状态的时候,不要改变它的哈希值了。 在下面的Employee示例类中,哈希值是用实例变量id来计算的。

2.5K20

iOS学习——iOS常用的存储方式

获得文件路径 项目中plist文件是存储沙盒的documents中,所以要获取某个plist文件,只需要知道其文件名就可以了,如下方式就好可以获取并读取其中的内容,读取时通过对应类型的方式来获取plist...所以如果需要立即写入文件的就必须调用synchronize方法。 偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。...2.3  NSKeyedArchiver(归档) 之前说了,不管是NSUserDefaults 或者是 plist 都不能对自定义对象进行存储,OC提供了解归档恰好解决这个问题。...归档iOS中是另一种形式的序列化,只要遵循了NSCoding协议的对象都可以通过它实现序列化。...但是沙盒中只能保存OC中的基本数据,自定义对象不能直接存入,但是可以通过归档存为.data文件。

3K100
  • iOS插件化架构探索

    动态库即动态链接库,是Cocoa/Cocoa Touch程序中使用的一种资源打包方式,可以将代码文件、头文件、资源文件、说明文档等集中在一起,方便开发者使用。...同时,可以将主工程配置信息里的参数,通过SVPURI的parameters的形式传递给主入口对象,当插件动态库提供给多个工程使用时,可以方便灵活的实现自定义初始化。...SVPBundle: 提供了一个通过bundlePath来初始化的方法,并提供了一个load方法,从沙盒中将动态库读取到bundle对象并加载,加载完成后获取bundle的principalClass对象并初始化...插件模块 首先创建一个动态库,创建工程时选Cocoa Touch Framework,如下图: ?...主工程 主工程的功能相对简单,先从Plist文件中读取配置信息并展示(该Plist文件可从网络下载): ?

    1.2K20

    iOS字典转模、xib的使用、自定义视图

    文件的加载)->实现按钮的监听方法 5、使用类方法加载xib,简化代码搭建界面 6、自定义视图,使用数据模型装配视图内容 若一个view的内部子控件比较多,通常会考虑自定义一个view 把内部的子控件创建屏蔽起来...) 键值编码:是一种间接修改、读取对象属性的一种方法;KVC被称为cocoa的大招 [self setValuesForKeysWithDictionary:appDictionary]...*) appDictionary; //返回plist文件对应的模型数组 ,使用懒加载 + (NSArray *)appList; 2、使用类方法实例化视图对象,并用数据模型装配视图内容 用类方法进行视图的实例化...-》字典-》模型)--自定义Plist 通常放置于Supporting Files目录中 #define kAppViewWidth 80 //视图宽度 #define KAppViewHeight...C++的11版本中,也有类似的关键字auto类型 可见所有的语言都致力于,使语言更容易使用 instancetype 类型表示上跟id一样(可以表示任何对象类型) instancetype 主要用于类方法实例化对象

    85410

    关于编程语言OC之9个基础知识点

    1、MAC操作系统上的整个开发环境成为CocoaCocoa的开发语言是Objective-C,开发工具是Xcode 我以前搞不懂CocoaChina为何叫Cocoa,原来是因为Cocoa是Mac的开发环境...3、类定义了现实世界中的一些事物的抽象特点 类Class-对象Object \方法Method 类是对象的模型,对象是类的一个实例。 类是一种逻辑结构,对象是真正存在的物理实体。...相信很多新手,看到各种h、m、xib、storyboard、plist、app、xctest这些文件类型名时,都有种想吐的感觉,看晕头了。 今天咱先记住h和m文件吧!...实例化对象需要需要发送2条消息,alloc及init,它们来自于NSObject父类。...如: Car *car=[[Car alloc]init]; 8、oc方法的调用:也称为给这个类或者实例发消息,类或者实例被称为“接收方”,oc允许一个方法调用中嵌套另一个方法调用 记住格式:方括号[

    1K80

    Sketch 插件开发官方文档合集插件基础您的第一个插件开发环境调试ActionAPI发布插件插件捆绑插件,脚本和命令插件位置更多关于CocoaScriptSketchTool参考资源

    基础如下: 你会像往常一样编写JavaScript代码 使用桥接器,您可以从主机应用程序(本例中为Sketch)或从系统本身获取Objective-C对象 基本的Objective-C对象具有等同的JavaScript...(如字符串和数字),通常可以以与JS版本相同的方式使用 您可以像在JS中一样读取和写入自定义Objective-C对象的属性 您可以使用熟悉的JavaScript语法或Objective-C方括号语法来调用自定义...>自定义插件...菜单项。...所以,当你CocoaScript中编写代码时,你确实在编写JavaScript。 CocoaScript还包含一个桥梁,可让您通过JavaScript访问Apple的Cocoa框架。...访问Cocoa和Sketch API 您可以从CocoaScript访问所有Cocoa和Sketch API。 Objective-C属性的行为与桥的JavaScript端应该一样。

    6.3K90

    iOS面试题梳理(二)

    Demo 比如我自定义的一个button [self addObserver:self forKeyPath:@"highlighted" options:0 context:nil]; #pragma...谓词的认识 Cocoa 中提供了一个NSPredicate的类,该类主要用于指定过滤器的条件, 每一个对象通过谓词进行筛选,判断条件是否匹配。...plist文件可以存储的7中数据类型:array、dictionary、string、bool、data、date、number。...实现NSCoding协议必须实现的两个方法: 3.编码(对象序列化):把不能直接存储到plist文件中得到数据,转化为二进制数据,NSData,可以存储到本地; 4.解码(对象反序列化):把二进制数据转化为本来的类型...Core DataIPhone OS之上,提供NSFetchedResultsController对象来做相关工作,Mac OS X上我们用Cocoa提供的绑定(Binding)机制来完成的。

    1.2K101

    Xcode工程结构详解

    当我们新建一个 Cocoa 项目时,Xcode 会提供一系列的模板,我们选择Single View App即可。...Framework & Library类型 Cocoa Touch Framework:自定义应用于UIKit框架。...一些用户界面的自定义信息(窗口的位置,顺序,偏好等等)。...,例如:宏定义文件、自定义 .plist文件、.pch文件等; Helpers:这个文件夹下主要放的是一些辅助业务相关的辅助文件; IM:这个文件夹下主要放的是即时聊天相关的业务文件; Core:这个文件夹下主要放的是一些核心代码...:这个文件夹下主要放的是一些系统常用的工具类,例如:获取时间工具类,文件大小等; Supporting Files :这个文件夹下主要放的是系统生成的文件,比如:AppDelegate文件、info.plist

    1.4K30

    使用Plist编辑器——简单入门指南

    本指南将介绍如何使用Plist编辑器。您将学习如何打开、编辑和保存plist文件,并了解plist文件的基本结构和用途。...跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plist文件。plist文件是一种常见的配置文件格式,用于存储应用程序或系统的设置信息,如键值对、数组、对象等。...Atom:Atom是一款轻量级的文本编辑器,也内置了plist编辑器,可以方便地编辑和管理plist文件。使用plist编辑器可以方便地编辑plist文件,包括读取、写入、修改和转换plist文件。...可以使用plist编辑器来读取plist文件中的数据,并将其写入到新的plist文件中,也可以将plist文件转换为其他格式,如JSON、XML和CSV等。...此外,plist编辑器还支持高级功能,如自定义设置和多种文件格式支持,可以满足不同的需求。总之,plist编辑器是一款强大的工具,可以简化plist文件的读写,并将其转换为更容易读取的格式。

    70720

    iOS应用数据存储(数据持久化)的常用方式一、iOS数据持久化方式二、应用沙盒(应用程序的文件夹)三、使用方法

    一、iOS数据持久化方式 (1)XML属性列表(plist)归档 (2)Preference(偏好设置),本质还是通过“plist”来存储数据, 但是使用更简单(无需关注文件、文件夹路径和名称) (..."]; 参数1:第一个参数指定了搜索的路径名称,NSDocumentDirectory表示是Documents中寻找,NSCachesDirectory的话就是cache文件夹中寻找 常用枚举...、NSArray、NSData、NSNumber等类型,就可以使用, 注意:不能存储自定义对象,会失败的 存方法:writeToFile 读方法:如字典, dictionaryWithContentsOfFile...NSUserDefaults standardUserDefaults]; (2)用一个变量接收 switcher.on = [userDefault boolForKey:@"key_name"]; 3、自定义对象归档...:方法可以将一个对象直接写入到一个文件中,但有时候可能想将多个对象写入到同一个文件中,那么就要使用NSData来进行归档对象,NSData可以为一些数据提供临时存储空间,以便随后写入文件,或者存放从磁盘读取的文件内容

    2.6K70

    【iOS开发】如何将 Array 存储本地

    做开发的时候,我们经常需要将数据保存在plist文件中,用这种方式来将数据写入磁盘,这样退出 App 再打开的话,上次写入的文件还在。...writeToFile(path:String, atomically useAuxiliaryFile:Bool) ->Bool 然而 writeToFile 这个函数却只属于 NSArray 假如我自定义了一个...Person类来写人,然后用数组来存储Person对象,那么我将把这个数组初始化为 let personArray :[Person] = [Person]() 这时,这个 personArray 就只能是...想要把它存储本地plist文件中,需要用到 NSKeyedArchiver 和 NSKeyedUnarchiver 但是在此之前,你需要把你的类改造一下。 ? 起初的类 ?...将peopleArray存储到本地plist ? 将peopleArray从本地plist中取出 附上我 StackOverFlow 上的相关讨论

    1.4K10

    使用Plist编辑器——简单入门指南

    本指南将介绍如何使用Plist编辑器。您将学习如何打开、编辑和保存plist文件,并了解plist文件的基本结构和用途。...跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plist文件。 plist文件是一种常见的配置文件格式,用于存储应用程序或系统的设置信息,如键值对、数组、对象等。...Atom:Atom是一款轻量级的文本编辑器,也内置了plist编辑器,可以方便地编辑和管理plist文件。 使用plist编辑器可以方便地编辑plist文件,包括读取、写入、修改和转换plist文件。...可以使用plist编辑器来读取plist文件中的数据,并将其写入到新的plist文件中,也可以将plist文件转换为其他格式,如JSON、XML和CSV等。...此外,plist编辑器还支持高级功能,如自定义设置和多种文件格式支持,可以满足不同的需求。 总之,plist编辑器是一款强大的工具,可以简化plist文件的读写,并将其转换为更容易读取的格式。

    58610

    使用Plist编辑器——简单入门指南

    本指南将介绍如何使用Plist编辑器。您将学习如何打开、编辑和保存plist文件,并了解plist文件的基本结构和用途。...跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plist文件。plist文件是一种常见的配置文件格式,用于存储应用程序或系统的设置信息,如键值对、数组、对象等。...Atom:Atom是一款轻量级的文本编辑器,也内置了plist编辑器,可以方便地编辑和管理plist文件。使用plist编辑器可以方便地编辑plist文件,包括读取、写入、修改和转换plist文件。...可以使用plist编辑器来读取plist文件中的数据,并将其写入到新的plist文件中,也可以将plist文件转换为其他格式,如JSON、XML和CSV等。...此外,plist编辑器还支持高级功能,如自定义设置和多种文件格式支持,可以满足不同的需求。总之,plist编辑器是一款强大的工具,可以简化plist文件的读写,并将其转换为更容易读取的格式。

    58010
    领券