道歉,如果这是一个非常基本的问题,但我有点精神困难。我可以继续作弊 - 引入一个foreach
式循环或其他东西 - 但它会破坏目的。
我正在学习ReactiveCocoa
和一般的概念。
我想制作AnnotationView
一个UITextView
,其NSAttributedString
显示AnnotationViewModel
内置annotatedText: String
annotationTags: [AnnotationTags]
和AnnotationTags
AnnotationOccurrence
反过来实际上是特定标签的所有AnnotationOccurrences
的集合。例如,如果我们注释“the”这个词,我们可能最终会得到许多class DocumentAnalysisViewModel {
let propertyText: MutableProperty<String>
let propertyTags: MutableProperty<[AnnotationTagViewModel]>
init(_ text: String, _ tags: [AnnotationTagViewModel]) {
self.propertyText = MutableProperty(text)
self.propertyTags = MutableProperty(tags)
}
}
,但只有一个标记为“the。”
AnnotationOccurrence
总之...
定义Occurrence
的方式 - 由开始/结束索引(只有一对) - 将annotatedText
与NSAttributedString
紧密结合。
因此,要格式化AnnotationTags,
,我需要annotatedText
,因此我需要vm.propertyTags.producer.combineLatestWith(vm.propertyText.producer)
同时提供标记。
这个小问题暴露了我在理解ReactiveCocoa和这种模式方面缺乏深度。我尝试了以下操作,但由于各种原因每次中途停止或提前停止:
map
- 显然,如果没有(String, [AnnotationViewModel])
将每个格式带到一个通用格式,比如说MutableProperty
的元组 - 我停止了,因为它感到笨拙和错误 DocumentAnalysisViewModel
(server {
listen 80 default_server;
listen 443 ssl default_server;
server_name backup.server.com;
location / {
include uwsgi_params;
uwsgi_modifier1 5;
#SOCKET for the app
uwsgi_pass unix:///var/run/uwsgi/app/backupprocessor/socket;
add_header Vary Accept-Encoding;
add_header Cache-Control private;
}
}
) - **再次感觉不对,因为即使在这种情况下它更好,我也不会学习如何处理反应性设计中的常见需求)感谢任何帮助!