标签: bidirectional

扩展NSMutableArray以进行双向关联管理

我非常喜欢代码生成(来自UML)并且来自Java世界,我想知道如何在Objective-C中实现自动双向关联管理.

图像协会合作伙伴< - >地址,一对多,可从两端导航.我想要实现的是,如果我向合作伙伴附加地址,地址对象应该自动了解其合作伙伴.

所以实现模式是在Partner端有一个NSMutableArray*,在Address端有一个Partner*.地址侧的属性很容易实现,因为setPartner :( Partner*)aPartner可以自动将地址(self)插入到合作伙伴的管理地址的NSMutableArray中.然而,另一方面并不那么容易实施.Objective-C中to-many引用的标准实现模式似乎是通过@property的get方法可获得的NSMutableArray.拥有此NSMutableArray的对象然后可以将Address对象插入到数组中,这当然不会更新另一方.

我知道这种关联管理还有其他模式,例如,通过addTo ...()和removeFrom ...()方法.但我还不知道这是否符合Cocoa编程的其他原则,甚至阻止我有效地使用Cocoa.我在这里考虑Interface Builder.没有多少经验,但我看到了一个名为ArrayController的东西,它看起来非常方便,但似乎也期望使用NSMutableArray类型属性.如果这个人将对象插入到数组中,我需要拦截它并进行另一侧调整.

作为一名Java程序员,我现在倾向于子类化NSMutableArray并覆盖它的一些方法,然后可以操纵另一端.这有可能吗?我读到了类别,但到目前为止,我已经明白我只能通过这种方式向类中添加方法,而不是覆盖它们,也不会添加到它的结构中.或者它应该是方法转发?我现在很困惑.如果你能指出我正确的思考方向,那就太棒了.非常感谢!

cocoa objective-c associations bidirectional

3
推荐指数
1
解决办法
731
查看次数

BidiMap 同步

使用apache commonds bidimap时,如何处理同步。例如,如果我创建如下所示的地图

BidiMap oneWay = new DualHashBidiMap();
BidiMap theOtherWay = oneWay.inverseBidiMap();

因此,如果我要向上述变量之一添加/访问/删除键/值对,我需要同步两者(线程同步)。如果我需要这样做,似乎我不会通过使用 2 张地图实现此功能而获得任何好处。

感谢您花时间查看此问题。

java synchronization bidirectional apache-commons

3
推荐指数
1
解决办法
2125
查看次数

推进标准地图的迭代器

主要问题已经出现在标题中:如何推进标准地图的迭代器?

但是由于大多数人都会问为什么我需要这个,我会提供更多信息:我有一个有几个地图的课程.我有至少2个微分方程,至少2种传感器类型(场或dft)和至少2种空间类型(体积,表面).我需要保存所有这些东西,并在它们之间建立关联.因此我认为拥有这些东西的地图是明智的,当事物彼此相关时,它们在地图中具有相同的关键字.

为简单起见,我们只考虑三张地图.

class Reader
{
    struct MaxwellSensor
    {
        // some members...
    };
    struct FieldSensor
    {
        // some members
        uint fieldMember;
    };
    struct DFTSensor
    {
        // some members
        uint dftMember;
    };    
    std::map<uint, MaxwellSensor> maxwellSensors;
    std::map<uint, FieldSensor> fieldSensors;
    std::map<uint, DFTSensor> dftSensors;

    uint getCountOfMaxwellSensors(){
        return maxwellSensors.size();
    }

    uint getMemberForMaxwellSensorByIndex(uint index){
        // This follows later
    }

};
Run Code Online (Sandbox Code Playgroud)

在我的程序过程中,我需要实例化a的几个变量SensorInterface.为此,我需要知道我有多少个麦克斯韦传感器,然后迭代通过麦克斯韦传感器并获得其他传感器的成员.

这看起来像:

class MyType{
    public:
        uint member;
}

int main(int argc, const char* argv[])
{
    // some code
    Reader myReader;
    for(uint i = …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stdmap bidirectional stdadvance

3
推荐指数
1
解决办法
4326
查看次数

SFTP是否需要双向访问

我有以下脚本通过接受以下参数从给定的远程目录获取给定文件

  1. 您要连接的主机名以获取文件
  2. 主机的用户名
  3. 您要传输文件的本地目录
  4. 您想要获取文件的远程目录
  5. 您希望从远程服务器获取的文件名
FSERVER=$1
FUSER=$2
SRC_DIR=$3
REMOTE_SRC_DIR=$4
FILE_NAME=$5

cd $SRC_DIR
sftp $FUSER@$FSERVER <<GOTO
cd $REMOTE_SRC_DIR 
ascii
get $FILE_NAME 
bye
Run Code Online (Sandbox Code Playgroud)

要访问从文件$REMOTE_SRC_DIRSRC_DIR我需要的端口从两侧打开?即双向或从远程服务器到源的一个端口,它应该需要来自源的"初始化"会话.那是什么原因?

根据我的理解,我们连接到远程服务器路径,然后编写查询获取文件名.所以我们需要双向访问.

port sftp bidirectional

3
推荐指数
1
解决办法
8545
查看次数

如何在Swift中实现双向映射?

我目前需要一个高性能的双向映射.在Swift中,字典可以颠倒,然而,它将返回由它组成的类型的元组,而不是对应的字典.

是否有图书馆或有人有关于如何解决这个问题的想法?

谢谢

dictionary hashtable hashmap bidirectional swift

3
推荐指数
1
解决办法
762
查看次数

为什么 stringstream ss(s) 与 ss &lt;&lt; s 不同?

当我尝试使用 stringstream 时

#include <iostream>
#include <string>
#include <sstream>

int main() {
    std::string s = "Hello World Test";
    std::stringstream ss(s);

    std::string a, b;
    ss >> a >> b;
    std::cout << a << ' ' << b << std::endl; // Hello World

    ss << " Why Not";
    ss >> a >> b;
    std::cout << a << ' ' << b << std::endl; // Still Hello World

    std::string c, d;
    std::stringstream tt;
    tt << s;

    tt >> c >> d;
    std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ string constructor stringstream bidirectional

3
推荐指数
1
解决办法
124
查看次数

Hibernate:AnnotationException:未知的mappedBy in ...在反向(mappedBy)上引用属性unknown,双向@OneToOne关联

我有以下简单的设计:

有效的XHTML http://www.kawoolutions.com/media/persons-roles-reduced.png

这基本上是JPA不支持的非不相交继承的解决方法.人可以自己存在,但可以选择单个玩家实体,单个教练实体或两个实体来完成逻辑.

以下是相当容易理解的JPA 2.0映射(注意@Id前向关联):

@Entity
@Table(name = "Persons")
public class Person implements Serializable
{
    @Id
    @Column(name = "id")
    private Integer id;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @OneToOne(mappedBy = "person")
    private Coach coach = null;

    @OneToOne(mappedBy = "person")
    private Player player = null;

    ...
}

@Entity
@Table(name = "Players")
public class Player implements Serializable
{
    @Column(name = "registration_nbr")
    private String registrationNbr = null;

    @Id
    @OneToOne
    @JoinColumn(name = "id")
    private Person …
Run Code Online (Sandbox Code Playgroud)

mapping hibernate jpa bidirectional one-to-one

2
推荐指数
1
解决办法
1万
查看次数

如何为双向迭代器定义operator <?

如何为双向迭代器定义operator <?(list :: iterator)

(我想用list而不是vector.)

c++ iterator bidirectional operator-keyword

2
推荐指数
1
解决办法
405
查看次数

单链表的双向迭代

我目前正在学习数据结构考试,并且遇到了有关迭代的问题。

是否可以在单链接列表上实现双向迭代器?如果是这样,将如何实施呢?

我有一个想法,首先向前遍历链表,然后存储一个临时链表,该链表将节点保持在相反的方向。但是遍历此临时列表将导致迭代器仅允许向后遍历。

java iterator bidirectional data-structures singly-linked-list

2
推荐指数
1
解决办法
1283
查看次数

用于表单验证的信号和观察者(Reactive Swift)未按预期工作

我正在使用反应式swift进行表单验证.但我面临重置价值和信号价值的问题.

当我按照验证规则的指示正确填充所有文本字段时,所有信号(textfield continuoustextvalues)都会产生真值,这将允许我发送表单数据.完成表单提交后,我重置了textfield的值.之后,我向所有信号Observer发送false值.但是当我开始填充文本字段时,它将获得以前的真实信号,并允许我在不应用任何验证规则的情况下发送数据.这意味着我无法重置信号值

任何帮助将非常感激.

我的问题:

import UIKit
import ReactiveSwift
import Result

class ContactVC: BaseViewController {

    @IBOutlet weak var textFieldName: JVFloatLabeledTextField!
    @IBOutlet weak var textFieldPhoneOL: JVFloatLabeledTextField!
    @IBOutlet weak var textViewComent: UITextView!
    @IBOutlet weak var textFieldLocationOL: JVFloatLabeledTextField!
    @IBOutlet weak var textFieldEmailOL: JVFloatLabeledTextField!
    @IBOutlet weak var btnSubmitOL: PGSpringAnimation!

    var (nameValidationSignal, nameValidationObserver) = Signal<Bool, NoError>.pipe()
    var (phoneValidationSignal, phoneValidationObserver) = Signal<Bool, NoError>.pipe()
    var (emailValidationSignal, emailValidationObserver) = Signal<Bool, NoError>.pipe()
    var (locationValidationSignal, locationValidationObserver) = Signal<Bool, NoError>.pipe()
    var (commentValidationSignal, commentValidationObserver) = Signal<Bool, NoError>.pipe()


    override func viewDidLoad() {
        super.viewDidLoad() …
Run Code Online (Sandbox Code Playgroud)

functional-programming bidirectional mvvm reactive-cocoa swift

2
推荐指数
1
解决办法
2318
查看次数