これが非常に基本的な質問である場合は申し訳ありませんが、私は少し精神的に行き詰まっています. foreach
おそらく不正行為 ( -style ループなどを導入すること) で進めることもできますが、それでは目的が果たせなくなります。
私はReactiveCocoa
特に、一般的な概念を学んでいます。
とで構成される から構築されたを表示するAnnotationView
と を 1 つ作成したいと考えています。UITextView
NSAttributedString
AnnotationViewModel
annotatedText: String
annotationTags: [AnnotationTags]
AnnotationTags
は実際には、特定のラベルのすべての のコレクションですAnnotationOccurrence
。たとえば、"the" という単語に注釈を付けた場合、"the"AnnotationOccurrences
という単語のタグは 1 つしかなく、多くのタグが作成されることになります。
class DocumentAnalysisViewModel {
let propertyText: MutableProperty<String>
let propertyTags: MutableProperty<[AnnotationTagViewModel]>
init(_ text: String, _ tags: [AnnotationTagViewModel]) {
self.propertyText = MutableProperty(text)
self.propertyTags = MutableProperty(tags)
}
}
ともかく...
が定義される方法AnnotationOccurrence
- 開始/終了インデックス (1 つのペアのみ) によって -Occurrence
とannotatedText
.
したがって、 をフォーマットするNSAttributedString
には が必要であり、タグを提供すると同時にAnnotationTags,
が必要です。annotatedText
この小さな問題により、ReactiveCocoa とこのパターン全般を理解する上での私の深さが不足していることが明らかになりました。私は次のことを試みましたが、さまざまな理由で毎回途中または以前に停止しました。
vm.propertyTags.producer.combineLatestWith(vm.propertyText.producer)
map
-明らかに、それぞれを共通の形式、たとえば、のタプルに変換しないとコンパイルできません(String, [AnnotationViewModel])
-不器用で間違っていると感じたのでやめました。- オブジェクト全体をマッピングするか、オブジェクト全体の を作成する
MutableProperty
(theDocumentAnalysisViewModel
) - **再び、間違っていると感じました。この場合はその方が優れていたとしても、リアクティブ設計で確かに一般的なニーズを処理する方法を学んでいないからです)
どんな助けでも大歓迎です!