这里有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只能拥有标准数据类型的成员。
你们如何处理我的问题?核心数据?
我通过使用SharedPreferences
和Gson.toJson(cardDeck)
在Android中处理了这个问题。
谢谢阅读!
Core Data是一个建立在SQLite之上的ORM。听起来它可能对你想要的东西有点过分。
您可以声明您的类Codable:
class CardDeck:Codable {}
然后只需使用JSONEncoder,JSONDecoder对它们进行编码和解码,然后将数据对象转换为String,然后存储在文件或用户首选项中。 CardDeck中的任何自定义类型也需要是JSONCodeable。
JSONCodeable是一种协议(即Java术语中的接口),可以作为现有类的扩展来实现(不能在Java中实现,在C#中可以这样做)。