arrays - DKImagePickerController : how to save DKAsset array to NSUserDefaults

标签 arrays swift cocoapods nsuserdefaults

我已经在我的应用程序中实现了 cocoapod DKImagePickerController,并且我想使用内置函数来记住应用程序重新启动时的选择:

    pickerController.selectedAssets = selAssets[sender]

但是,我似乎无法弄清楚如何保存 [[DKasset]] (DKasset 数组的数组)。

我已经尝试过:

func getUserSettings()
{
    selAssets = NSKeyedUnarchiver.unarchiveObjectWithFile(fileInDocumentsDirectory("assets")) as! [[DKAsset]]
}

func setUserSettings()
{
    NSKeyedArchiver.archiveRootObject(selAssets, toFile: self.fileInDocumentsDirectory("assets"))
}

但是 getUserSettings() 不会用可用对象填充数组。我还尝试过使用 NSUserDefaults 的 objectForKey,但这似乎与 DKAsset 不兼容。 DKAsset 类是 NSObject 的子类。

如何保存和加载该数组?

cocoa pod : https://cocoapods.org/pods/DKImagePickerController

最佳答案

对于任何想要这样做的人:

func loadFromNSDefaults()
{
    if UserDefaults.standard.stringArray(forKey: "selection") != nil
    {
        assetIdentifier = UserDefaults.standard.stringArray(forKey: "selection")!
    }
    fetchAsset.removeAll()
    selAssets.removeAll()
    let options = PHFetchOptions()
    for i in 0..<assetIdentifier.count
    {
        print(i)
        fetchAsset.append(PHAsset.fetchAssets(withLocalIdentifiers: assetIdentifier, options: options).object(at: i))
        selAssets.append(DKAsset.init(originalAsset: fetchAsset[i]))
    }
}

func saveToNSDefaults(assets: [DKAsset])
{
    assetIdentifier.removeAll()
    for i in 0..<assets.count
    {
        assetIdentifier.append((assets[i].originalAsset?.localIdentifier)!)
        print(assets[i].originalAsset?.localIdentifier)
    }
    UserDefaults.standard.setValue(assetIdentifier, forKey: "selection")
}

关于arrays - DKImagePickerController : how to save DKAsset array to NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497039/

相关文章:

python - 用两个一维数组创建一个二维数组

swift - 为什么我不能在 Metal 中绑定(bind)一次 Assets ?

ios - 带搜索栏跳转的导航 Controller

iOS swift : UIAccessibilitySpeechAttributeIPANotation

ios - Pod 安装在 React-native mac os catalina 10.15 中不起作用

ios - Cocoapods项目设置问题

iphone - 将 POD 格式从 3D Max 导出到 cocos3D

javascript - 基于多个属性过滤对象数组

arrays - 将字符串参数传递给函数以访问数组的属性

javascript - 通过用户输入将对象添加到数组