我是Swift开发的新手。我用16行制作了tableView - 每个项目都有名称和价格。
当用户点击一行时,会显示一个新的tableView(带有静态单元格)。用户可以编辑价格(我只需要价格可变)并保存。然后,显示具有新价格的原始tableView。
但是,当我停止并再次加载应用程序时,会有原始价格。
我发现我必须永久使用Core Data来存储数据。但是我需要在数据库中填充这16行(安装后第一次加载),然后让用户永久更改价格(或直到再次更改)。
有可能吗?如何?我应该使用核心数据还是有更简单的选择?
答案 0 :(得分:0)
到目前为止,向你推荐的所有内容都比它需要的更复杂。你说的是本地数据,而且数量非常少。
最简单的选择是使用plist。
如果您创建新文件,Xcode可以提供帮助,请选择Resource
作为类型,然后选择Property List
。一旦创建它默认包含一个字典,但您可以将其转换为数组。添加您的数据,因此您有一系列带有价格等值的词典。
现在,当您运行应用程序时,此文件将成为软件包的一部分,因此您无法对其进行编辑。您应该通过使用NSBundle
找到该文件并将其与NSFileManager
一起复制到文档文件夹中来复制该文件。
一旦它存在,您可以使用NSArray init?(contentsOfFile path: String)
加载数据。使用mutableCopy
创建可以编辑的版本。您可以使用此数组来驱动表视图,并可以编辑它包含的值。请注意,使用这种简单的技术,数组中的字典将是不可变的,因此您最好使用NSPropertyListSerialization class func propertyListWithData(_ data: NSData, options opt: NSPropertyListReadOptions, format format: UnsafeMutablePointer<NSPropertyListFormat>) throws -> AnyObject
而选择MutableContainersAndLeaves
。
编辑完阵列内容后,您可以将其写回磁盘以便下次运行(使用class func dataWithPropertyList(_ plist: AnyObject, format format: NSPropertyListFormat, options opt: NSPropertyListWriteOptions) throws -> NSData
)