使用数组和UserDefaults的操作

时间:2018-07-09 12:10:15

标签: ios swift

我需要一个代码来将数据写入电路板,

variables:

favoriteKey String "favoriteProducts1"
String productId "803566"


removeProductToFavorites (favoriteKey: "favoriteProducts1", productId: productsObjectArray [sender.tag] .code!)

@objc func favoriteBtnPressed1 (_ sender: UIButton) {
        let productStatus = checkProductFavoriteIsAvailable (favoriteKey: "favoriteProducts1", productId: productsObjectArray [sender.tag] .code!)
        if productStatus == true {
            removeProductToFavorites (favoriteKey: "favoriteProducts1", productId: productsObjectArray [sender.tag] .code!)
        } else {
            saveProductToFavorites (favoriteKey: "favoriteProducts1", productId: productsObjectArray [sender.tag] .code!)
        }
    }
    
    
func checkProductFavoriteIsAvailable (favoriteKey: String, productId: String) -> Bool {
        var status = false
        if let arr = UserDefaults.standard.array (forKey: favoriteKey) as? [String] {
            status = true
        }
        return status
    }
    
    func saveProductToFavorites (favoriteKey: String, productId: String) {
        var favoriteArray = UserDefaults.standard.array (forKey: favoriteKey) as? [String]
        favoriteArray? .append (productId)
        UserDefaults.standard.set (favoriteArray, forKey: productId)
    }
    
    func removeProductToFavorites (favoriteKey: String, productId: String) {
        
    }
    

我需要在UserDefaults文件中写入一个数组,其中包含收藏夹产品列表。

以上代码旨在: 1. checkProductFavoriteIsAvailable-此函数将返回true-如果数组已包含产品代码,则返回false,否则将返回false 2. saveProductToFavorites-将新数字(字符串)保存到数组和文件中 3.从阵列和文件中删除所选的产品代码

我可以寻求帮助吗?

更新

我的调试:http://serwer1356363.home.pl/pub/debug.png

3 个答案:

答案 0 :(得分:0)

checkProductFavoriteIsAvailable不检查数组中是否存在产品。它检查favoriteKey中是否存在键为Userdefaults的数组。 您需要从用户默认设置中获取阵列,并在该阵列中检查产品是否存在。

答案 1 :(得分:0)

我认为您想要在功能'saveProductToFavorites'中执行的操作是,无论您得到的是什么'productId',您都希望将其添加到针对键'favoritekey'存储的数组中 将您的代码更改为关注,

var favoriteArray = UserDefaults.standard.array(forKey: favoriteKey) as? [String]
if favoriteArray == nil {
    favoriteArray = []
}
favoriteArray.append(productId)
UserDefaults.standard.set(favoriteArray, forKey: favoriteKey)

答案 2 :(得分:0)

这两个功能可将产品ID添加到收藏夹,并从收藏夹中删除产品ID。

timedelta首先检查saveProductToFavorites中是否有数组。如果是,则在数组不包含ID的情况下添加ID。如果否,它将创建一个新数组。最后将数组保存回去

UserDefaults

func saveProductToFavorites(favoriteKey: String, productId: String) { if var favoriteArray = UserDefaults.standard.stringArray(forKey: favoriteKey) { if !favoriteArray.contains(productId) { favoriteArray.append(productId) UserDefaults.standard.set(favoriteArray, forKey: favoriteKey) } } else { let favoriteArray = [productId] UserDefaults.standard.set(favoriteArray, forKey: favoriteKey) } } 删除ID(如果该数组和ID存在)

removeProductFromFavorites