因此,Plist上的项目的Userdefault数组保存

时间:2018-01-19 20:16:57

标签: swift save userdefaults

好的,所以我只是得到一个简单的问题,如果这是可能的。我的plist上有一系列字典,它在一个单元格列表中的viewcontroller 1上显示大约800个项目。如果用户点击其中一个单元格并转到Viewcontroller 2,我可以制作与每个单元格关联的用户默认数组吗?例如,如果我有Apple,Banana,Kiwi等水果列表。用户点击Apple,在用户默认情况下,它知道它击中了第一个单元格并将用户默认值设置为1.我要做的是给每个单元格的用户默认值,以便用户可以将这些项目保存到他们喜欢的列表中我只是使用userdefault将该特定项目保存到收藏夹列表。因为当我使用userdefault时它会立即保存所有项目,因为如果我将boolean设置为true,则它会为所有项目执行,因为plist单元格上的每个项目都使用相同的userdefault键。就像在我的viewcontroller 2上设置

var isFavorite = UserDefaults.standard.bool(forKey: "isFavorite")

@IBAction func addToFav(_ sender: UIButton){
    isFavorite = !isFavorite
    UserDefaults.standard.set(isFavorite, forKey: "isFavorite")
    UpdateButtonAppearance()
}

func UpdateButtonAppearance(){
    if isFavorite{
        let image = UIImage(named: "addFav")
        favButton.setImage(image, for: .normal)
    } else{
        let image = UIImage(named: "addFavFilled")
        favButton.setImage(image, for: .normal)
    }
}

所以为了避免以同样的方式保存所有列表,我想知道如何使用userdefault方法单独保存每个单元格?

1 个答案:

答案 0 :(得分:0)

创建一个包含所有收藏夹键的字典,例如“Apple”,“Banana”,“Kiwi”和“true”作为值。如果UserDefaults同时理解了键和值,它们应该很乐意为你保存一个字典,即它们都是字符串。

$g_allow_signup    = ON;  //allows the users to sign up for a new account
$g_enable_email_notification = ON; //enables the email messages
$g_phpMailer_method = PHPMAILER_METHOD_SENDMAIL; //If not using sendmail, use: PHPMAILER_METHOD_SMTP;
$g_smtp_host = 'edge.mycompany.com';
$g_smtp_connection_mode = 'tls';
$g_smtp_port = 587;
$g_smtp_username = 'xxx'; // my username for email myname@mycompany.com
$g_smtp_password = 'xxx'; // my password for email myname@mycompany.com
$g_administrator_email  = 'myname@mycompany.com';
$g_webmaster_email      = 'myname@mycompany.com';
$g_from_email           = 'myname@mycompany.com';
$g_return_path_email    = 'myname@mycompany.com';
$g_from_name = 'Mantis Bug Tracker';

// Log configuration
$g_log_level = LOG_EMAIL | LOG_EMAIL_RECIPIENT | LOG_FILTERING | LOG_AJAX;
$g_log_destination = 'file:/wamp64/logs/mantis.log';
?>