2015-07-29 33 views
11

phép nói rằng tôi có các tình huống sau ...Tách một đối tượng khỏi một vương quốc?

ViewController1 tải một đối tượng Person từ một Realm trên các chủ đề chính và chuyển nó tới ViewController2. Tương tác người dùng trong ViewController2 làm cho cùng một đối tượng Person thay đổi, nhưng tôi chỉ muốn tiếp tục thay đổi khi Người dùng đã nhấn "Lưu".

Hiện tại, khi thay đổi đối tượng được thông qua Person trong ViewController2, lỗi thời gian chạy được ném nói rằng các thay đổi đối với đối tượng cần phải được thực hiện trong khối Ghi. Điều này có ý nghĩa, nhưng trong trường hợp này tôi không thực sự muốn tiếp tục thay đổi ngay lập tức.

  • Có cách nào để tách một đối tượng khỏi một thế giới để tránh các séc này không?
  • Nếu không có, công việc được đề xuất sẽ là gì? (Sao chép đối tượng sang một cá thể mới? Theo dõi các thay đổi đối tượng riêng biệt và áp dụng chúng sau này? Cả hai dường như khá lộn xộn.)
+0

Có thể liên quan https://github.com/realm/realm-java/issues/1202 – Ixx

+0

Xem tại đây: https://realm.io/docs/swift/latest/ trong phần "Cập nhật đối tượng", nếu bạn có một khóa chính bạn có thể sử dụng 'Realm(). add (_: update:)'. Vì vậy, có vẻ như bạn đã tạo lại đối tượng và khi bạn muốn lưu nó làm giao dịch ghi và thực hiện cập nhật. – Ixx

+0

Cảm ơn Ixx, đó là cùng một vấn đề tôi đang gặp phải. Đối tượng của tôi khá lớn (nhiều trường) và tôi không muốn phải sao chép tất cả vào một đối tượng mới mỗi lần. :( – lionpants

Trả lời

11

Ngay bây giờ, bạn có thể tạo một bản sao độc lập của đối tượng, qua Object(value: existingObject) - đó có thể sẽ là giải pháp đơn giản nhất hiện nay, cho đến khi Realm thêm một cái gì đó giống như các giao dịch lồng nhau sẽ làm cho một số lượng thay đổi tùy ý dễ dàng hơn.

+0

Đây có phải là cách để Swift bắt đầu một đối tượng mới từ đối tượng hiện có không? Có cách nào tương tự trong OC? –

+2

Dựa trên các thử nghiệm hiện tại, điều này sẽ xóa đối tượng, nhưng không tách các đối tượng liên quan - cố gắng sửa đổi một đối tượng liên quan từ quan hệ thành nhiều vẫn hiển thị "Cố gắng sửa đổi đối tượng bên ngoài giao dịch ghi" – o15a3d4l11s2

+0

Đây hiện là cách đơn giản nhất và tách biệt các đối tượng lĩnh vực ... – virusss8

Các vấn đề liên quan