解析:如何防止指针在Android中递归保存?

时间:2015-07-28 14:57:00

标签: android pointers recursion parse-platform

我是一个名为Booking的解析类,它指向解析类:Ticket_User以及其他不相关的字段。
Ticket指向Location以及更多不相关字段的位置 除Booking类之外的大多数类都具有类级访问列表限制,这对我的应用程序的安全性是必需的。
以下是我用来尝试使用android SDK保存预订对象的代码:

    final Booking booking = new Booking();
    // For pointer like behaviour
    Ticket ticketPointer = Ticket.createWithoutData(Ticket.class, bookingData.getTicket().getObjectId());
    booking.setTicket(ticketPointer);

    ArrayList<Coupon> couponPointers = new ArrayList<>();
    for (Coupon coupon : bookingData.getCoupons()) {
        // For pointer like behaviour
        couponPointers.add(Coupon.createWithoutData(Coupon.class, coupon.getObjectId()));
    }
    booking.setCoupons(couponPointers);

    booking.setClient(ParseUser.getCurrentUser());
    booking.setTicketCount(bookingData.getTicketCount());
    booking.setPaymentMethod(Booking.PaymentMethod.CASH_ON_ARRIVAL);

    booking.saveInBackground(new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (asserter.assertPointerQuietly(e)) {
                e.printStackTrace();
            } else {
                l.d("Successfully posted a booking request on server");
            }
        }
    });

问题在于解析以递归方式保存对象,因此即使指针指向的对象也会与保存的对象一起保存。并且由于常规用户无法访问其他类,因此在尝试保存指针指向的这些对象时会引发异常。因此,我根据保存指针here的解决方案,使用createWithoutData方法以评论// For pointer like behaviour标记的方式,以指针的形式将票证和优惠券对象放入预订对象中。登记/> 所有这一切都运行良好,我通过访问以递归方式保存的Ticket和Coupon类来摆脱异常。 但是,令我惊讶的是,上面的代码导致了另一个异常,这是由于尝试访问Location类引起的,Ticket对象的指针指向Booking对象。对象(第二级指针)!!!。

有没有办法防止指向位置对象?理想的解决方案是首先禁用递归保存,但任何解决方案都将受到赞赏。

存在一个变通方法,但它很难看,我想避免它:它涉及使用对象的对象id而不是指针的字符串表示。

0 个答案:

没有答案