簡體   English   中英

iOS Xcode 如何使用包含自定義對象的自定義對象保存數據?

[英]iOS Xcode How to persist data with custom objects containing custom objects?

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 但 CardDeck 只能具有標准數據類型的成員。

你們專業人士如何處理我的問題? 核心數據?

我在 Android 中使用SharedPreferencesGson.toJson(cardDeck)處理了這個問題。

謝謝閱讀!

CoreData 是一個建立在 SQLLite 之上的 ORM。 聽起來對於你想要的東西來說可能有點矯枉過正。

您可以將您的類聲明為 Codable:

類 CardDeck : Codable { }

然后只需使用 JSONEncoder、JSONDecoder 將它們編碼和解碼為 Data 對象,這些對象可以轉換為 String 然后存儲在文件或用戶首選項中。 CardDeck 中的任何自定義類型也需要是 JSONCodeable。

JSONCodeable 是一種協議(即 Java 術語中的接口)並且可以作為現有類的擴展來實現(在 Java 中不能這樣做,在 C# 中可以這樣做)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM