iOS Xcode如何使用包含自定义对象的自定义对象来保存数据?

问题描述 投票:2回答:1

这里有Android开发者和iOS新手。我有一个应用程序,我正在迁移到iOS。我正在学习Xcode和Swift,所以请温柔! :)

我的问题是我只想保存/检索下面的类(在Java中):

public class CardDeck implements Parcelable{

  private ArrayList<Profile> cards;

  private int location;

  public CardDeck(){
    this.cards = new ArrayList<>();
    this.location = 0;
    //this.numCards = 0;
  }

  public CardDeck(ArrayList<Profile> cards) {
    this.cards = cards;
    this.location = 0;
    //this.numCards = cards.size();
  }

  protected CardDeck(Parcel in) {
    cards = in.createTypedArrayList(Profile.CREATOR);
    //numCards = in.readInt();
    location = in.readInt();
  }
}

我想保存/检索包含配置文件数组的CardDeck对象。我的初步读数让我觉得你无法使用UserDefaults或NSCoding执行此操作,因为plist文件不能包含自定义数据类型,如Profile。我做对了吗? UserDefaults用于标准数据类型(bool,int,String等),NSCoding可以处理自定义对象,如CardDeck BUT,CardDeck只能拥有标准数据类型的成员。

你们如何处理我的问题?核心数据?

我通过使用SharedPreferencesGson.toJson(cardDeck)在Android中处理了这个问题。

谢谢阅读!

ios swift core-data nsuserdefaults nscoding
1个回答
2
投票

Core Data是一个建立在SQLite之上的ORM。听起来它可能对你想要的东西有点过分。

您可以声明您的类Codable:

class CardDeck:Codable {}

然后只需使用JSONEncoder,JSONDecoder对它们进行编码和解码,然后将数据对象转换为String,然后存储在文件或用户首选项中。 CardDeck中的任何自定义类型也需要是JSONCodeable。

JSONCodeable是一种协议(即Java术语中的接口),可以作为现有类的扩展来实现(不能在Java中实现,在C#中可以这样做)。

© www.soinside.com 2019 - 2024. All rights reserved.