gpt4 book ai didi

ios - 无法在数组中插入对象,我想将其添加到用户默认值

转载 作者:行者123 更新时间:2023-11-30 13:17:15 24 4
gpt4 key购买 nike

我已经初始化了数组

    var defaults = NSUserDefaults.standardUserDefaults()
var initObject: [CPaymentInfo]? = defaults.objectForKey("paymentData") as? [CPaymentInfo]
if initObject == nil {
initObject = [CPaymentInfo]()
defaults.setValue(initObject, forKey: "paymentData")
}
defaults.synchronize()

我有 Controller ,其中包含两个文本标签和两个按钮:保存和取消(都调用 segue)

    if sender as? UIBarButtonItem == saveButton {
var defaults = NSUserDefaults.standardUserDefaults()
var payments: [CPaymentInfo]? = defaults.objectForKey("paymentData") as? [CPaymentInfo]
var newPaymentItem: CPaymentInfo?
if discriptionField.hasText() {
newPaymentItem = CPaymentInfo(value: (valueField.text as NSString).doubleValue, discription: discriptionField.text)
} else {
newPaymentItem = CPaymentInfo(value: (valueField.text as NSString).doubleValue)
}

if let newPay = newPaymentItem {
payments?.insert(newPay, atIndex: 0)
}
defaults.setObject(payments, forKey: "paymentData")
}

但它不起作用并且应用程序崩溃了。我发现我可以将“付款”设置为 key 默认值中的新对象,而无需更改(通过插入 block 的注释)。我还发现,我只能使用 setObject 方法注释行,应用程序也可以工作。我怎样才能做我想做的事?

<小时/>

2015-07-14 20:34:34.403 cash app[15156:1494701] Property list invalid for format: 200 (property lists cannot contain objects of type 'CFType') 2015-07-14 20:34:34.404 cash app[15156:1494701] Attempt to set a non-property-list object ( "cash_app.CPaymentInfo" ) as an NSUserDefaults/CFPreferences value for key paymentData 2015-07-14 20:34:34.409 cash app[15156:1494701] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object ( "cash_app.CPaymentInfo" ) for key paymentData'

最佳答案

答案在错误消息中:

Attempt to insert non-property list object ( "cash_app.CPaymentInfo" ) for key paymentData'

您不能将任意类放入属性列表中(例如 NSUserDefaults)。有一个可接受的类别的特定列表。如果您想存储其他类,则需要将它们转换为可接受的类。

有关将非属性列表类保存为用户默认值的文档,请参阅 Storing NSColor in UserDefaults 。虽然该文章重点介绍 NSColor,但它适用于符合 NSCoding 的任何对象。另请参阅 Introduction to Property Lists 中的注释.

关于ios - 无法在数组中插入对象,我想将其添加到用户默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38097108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com