teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

基礎を見直すと解決できます。

2021/04/07 01:13

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,82 +1,3 @@
1
1
  RealmSwiftで1対複を実現させたいです。
2
2
  各セル(ツイート)に複数のセル(ツイート)を格納したいと思っています。
3
- 以下のコードで、**Tweet**が**ReplyTweet**を複数持たせたいです。
3
+ 以下のコードで、**Tweet**が**ReplyTweet**を複数持たせたいです。
4
- ```ここに言語を入力
5
- class Tweet: Object {
6
-
7
- @objc dynamic var tweetId: Int = 0
8
- @objc dynamic var caption: String = ""
9
- @objc dynamic var timestamp: Date = Date()
10
- @objc dynamic var retweetCount: Int = 0
11
- @objc dynamic var likes: Int = 0
12
- @objc dynamic var didLike = false
13
- @objc dynamic var replyingTo: String?
14
- @objc dynamic var isReply: Bool { return replyingTo != nil }
15
-
16
- let users = LinkingObjects(fromType: User.self, property: "tweets")
17
-
18
- let replyTweet = List<ReplyTweet>()
19
-
20
- override static func primaryKey() -> String? {
21
- return "tweetId"
22
- }
23
-
24
- }
25
-
26
- class ReplyTweet: Object {
27
-
28
- @objc dynamic var replyTweetId: Int = 0
29
- @objc dynamic var replyCaption: String = ""
30
- @objc dynamic var replyTimeStamp: Date = Date()
31
- @objc dynamic var replyRetweetCount: Int = 0
32
- @objc dynamic var likes: Int = 0
33
- @objc dynamic var didLike = false
34
- @objc dynamic var replyingTo: String?
35
- @objc dynamic var isReply: Bool { return replyingTo != nil }
36
-
37
- let replyTweets = LinkingObjects(fromType: Tweet.self, property: "replyTweet")
38
-
39
- override static func primaryKey() -> String? {
40
- return "replyTweetId"
41
- }
42
-
43
- }
44
- ```
45
- ここで問題のコードなのですが、tweetとreplyで処理を分けているのですが、Listで追加したいのがreplyです。
46
- captionで入力したテキストを、replyNewIdでIDを追加し、TweetクラスのListのプロパティに入れています。
47
- しかし、これだと複数を入れることができず、別々に保存してしまいます。
48
- Listで複数を保存するにはまだ不十分なことは分かるのですが、これでできない原因が分かりません。
49
- どなたかご存知の方、どうかお願いします。
50
-
51
- ```
52
- @objc func handleUploadTweet(){
53
- view.endEditing(true)
54
- let tweetRealm = Tweet()
55
- let replyTweetRealm = ReplyTweet()
56
- guard let caption = captionTextView.text else { return }
57
-
58
- TweetService.shared.uploadTweet(caption: caption, type: config) {
59
-
60
- switch self.config {
61
- case .tweet:
62
- tweetRealm.caption = caption
63
- tweetRealm.tweetId = self.newId(model: tweetRealm)!
64
- try! self.realm.write {
65
- self.realm.add(tweetRealm, update: .all)
66
- }
67
- case .reply:
68
- replyTweetRealm.replyCaption = caption
69
- replyTweetRealm.replyTweetId = self.replyNewId(model: replyTweetRealm)!
70
- tweetRealm.replyTweet.append(replyTweetRealm)
71
-
72
- try! self.realm.write {
73
- self.realm.add(tweetRealm.replyTweet, update: .all)
74
- }
75
-
76
- }
77
-
78
- }
79
-
80
- dismiss(animated: true, completion: nil)
81
- }
82
- ```