2016-06-02 13 views
5

Đây là mã nơi tôi đang thực hiện trợ giúp sai.Tại sao NSDictionary là không?

  for result in (result2){ 

      var dictData: NSDictionary? 

      dictData?.setValue(result.valueForKey("offer_title") as? String, forKey:"offer_title") 
       print(result.valueForKey("offer_title") as? String) 
      if result.valueForKey("discountPercentageOff") as? String != "" { 
       dictData?.setValue(result.valueForKey("discountPercentageOff") as? String, forKey:"discountPercentageOff") 
       print(result.valueForKey("discountPercentageOff") as? String) 
      } 

      dictData?.setValue(result.valueForKey("is_booked") as? Bool, forKey:"is_booked") 
      print(result.valueForKey("is_booked")) 
      dictData?.setValue(result.valueForKey("is_saved") as? Bool, forKey:"is_saved") 
      print(result.valueForKey("is_saved")) 

      dictData?.setValue(result.valueForKey("area_id") as? String, forKey:"area_id") 
      print(result.valueForKey("area_id")) 

      dictData?.setValue(result.valueForKey("area_name") as? String, forKey:"area_name") 

      dictData?.setValue(result.valueForKey("business_id") as? String, forKey:"business_id") 
      dictData?.setValue(result.valueForKey("business_name") as? String, forKey:"business_name") 
      dictData?.setValue(result.valueForKey("category_id") as? String, forKey:"category_id") 
      dictData?.setValue(result.valueForKey("category_name") as? String, forKey:"category_name") 
      dictData?.setValue(result.valueForKey("expiry_date") as? String, forKey:"expiry_date") 
      dictData?.setValue(result.valueForKey("featured") as? String, forKey:"featured") 
      dictData?.setValue(result.valueForKey("locality") as? String, forKey:"locality") 
      dictData?.setValue(result.valueForKey("offer_available") as? String, forKey:"offer_available") 
      dictData?.setValue(result.valueForKey("offer_id") as? String, forKey:"offer_id") 
      dictData?.setValue(result.valueForKey("offer_image") as? String, forKey:"offer_image") 
      dictData?.setValue(result.valueForKey("offer_nature") as? String, forKey:"offer_nature") 
      dictData?.setValue(result.valueForKey("offerNatureValue") as? String, forKey:"offerNatureValue") 
      dictData?.setValue(result.valueForKey("on_going") as? Bool, forKey:"on_going") 
      dictData?.setValue(result.valueForKey("discountOriginalPrice") as? String, forKey:"discountOriginalPrice") 
      dictData?.setValue(result.valueForKey("discountDiscountedPrice") as? String, forKey:"discountDiscountedPrice") 

      let offer = Offer() 
      offer.setDatafromServer(dictData!) 
      self.saveOfferData(item as! NSDictionary) 
      print("item:\(dictData)") 

      self._featuredOfferArray.addObject(offer) 
      self.feturedOfferTableView.reloadData() 



     } 

khi tôi chuyển nsdictionary dưới dạng tham số cung cấp lỗi tùy chọn nil và bạn có thể thấy tôi đã tạo nsdictionary mỗi vòng lặp. nhưng nó chưa được. tôi không thể hiểu.

+1

Bạn cần khai báo NSMutableDictionary không phải là NSDictionary – iSashok

+1

'NSDictionary' không thể thay đổi được. – Desdenova

+0

tôi không có bất kỳ kết quả nào –

Trả lời

4
var dictData: NSDictionary? 

Thay đổi dòng này để

var dictData = NSMutableDictionary(); 
3

Bạn không bao giờ khởi tạo từ điển của mình, var dictData: NSDictionary? chỉ xác định loại biến sẽ là. Ngoài ra, nếu bạn muốn thay đổi từ điển, nó phải có thể thay đổi được.

Bắt đầu với:

var dictData: NSMutableDictionary? = NSMutableDictionary() 
0

Lý do thất bại là từ điển không được khởi tạo ở tất cả.

Có một cú pháp dễ dàng hơn nhiều với các kiểu gốc Swift, bất kỳ thao tác nhập nào thực sự không cần thiết vì bạn chỉ sao chép các mục AnyObject. Nếu bất kỳ giá trị nào là nil thì khóa không được đặt.

for result in result2 { 

    var dictData = [String:AnyObject]() 

    dictData["offer_title"] = result["offer_title"] 
    dictData["discountPercentageOff"] = result["discountPercentageOff"] 
... 

Hoặc thậm chí sao chép toàn bộ từ điển (trong Swift không có vấn đề do ngữ nghĩa giá trị) và xóa các phím không sử dụng vẫn hiệu quả hơn.

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