2017-06-13 4 views
1

シングルトンクラスを使用してCoreDataからデータを選択し、呼び出し元のViewControllerに送信します。私の問題は、ManagedObjectのプロパティの1つを取得するときに、EXC_BAD_ACCESS例外でアプリケーションがクラッシュすることです。EXC_BAD_ACCESS例外を受け取る

これは、iOS 9.xまたはシミュレータでのみ発生するようですが、これらはかなり一貫しています。 10.xを実行しているデバイスでは発生していません。私はゾンビのオブジェクトを表示する方式で診断を設定し、現在は次のエラーを提示しています:

-[CFString copy]: message sent to deallocated instance 0x15b92990 

問題は、私はこのエラーを取得する前に、参照されている文字列を直接取得したオブジェクトの上にあるということである、と私は使用していますスウィフト(何も手動で割り当てを解除しないので)、私はなぜそれが割り当て解除されたのか分かりません。

オブジェクトを選択するコードは次のようになります。次のようにのViewControllerから呼び出され、そして使用される

func getModelTypePrice(mmCode: String, year: Int) -> ModelTypePrice? { 
    let request = NSFetchRequest<ModelTypePrice>(entityName: "ModelTypePrice") 
    request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [NSPredicate(format: "mmcode = %@", mmCode), 
                     NSPredicate(format: "reg_year = %d", year)]) 
    do { 
     let prices = try managedContext.fetch(request) 
     if prices.count == 1 { 
      return prices[0] 
     } 
    } catch { 
     print("Error selecting object: \(error)") 
    } 
    return nil 
} 

if let price = LibraryAPI.sharedInstance.getModelTypePrice(mmCode: "123", year: 2017) { 
    self.newPrice = price.new_price // Error happens here. 
} 

のViewControllerはnewPriceと呼ばれるオプションの文字列プロパティを持っています。 ModelTypePriceのnew_priceプロパティもオプションのStringです。 私はここで紛失しているので、アドバイスや提案をいただければ幸いです。

+0

価格の価値は何ですか? –

+0

getModelTypePriceで返す前に印刷すると、次のようになります: 'prices [0] .new_price:Optional(" 369737 ")' – James

+0

これを試してください... self.newPrice = prices.new_price! – Bala

答えて

1

これは、それを修正:[CFNumber release]: message sent to deallocated instance

を問題は、(それがnew_priceだった)newから始まる管理対象オブジェクトのプロパティの名前でした。 price_newに変更してください。明らかに、彼らはiOS 10.xでこれがどのように処理されたかを変えました。

多分、これは他の人にいくつかの欲求不満を救います。

関連する問題