2016-03-21 22 views
1

Bir dalış uygulamasında çalışıyorum ve özelliklerden biri dalışın derecesini CoreData içine ikiye depolamaktır. Arayüz, coredata nesnesinden çift değeri alabilmeli ve daha sonra ekranda görüntülenebilmelidir. Ancak, kodumdan aldığım problem, nesneden dönen çiftin çok küçük olmasıdır (-315 gücüyle). Bunun neden olduğu hakkında hiçbir fikrim yok. İşte CoreData'dan çift çok küçük bir sayı döndürüyor

if let dives = self.diveSite?.logged_dives { 
      for dive in dives { 
       print("######### dive site info ########") 
       rating = Double(dive.rating) + rating 
       print(dive) 
       print("raw dive site rating is \(dive.rating)") 
       print("dive rating is \(rating)") 
      } 
     } else { 
      print("no logged_dives") 
     } 

######### dive site info ######## 
<ScubaDoo.DiveLog: 0x7fe9ea02cbc0> (entity: DiveLog; id: 0xd000000000180002 <x-coredata://2B6F1E6F-1EDA-4910-91FA-0593E05F9EB2/DiveLog/p6> ; data: { 
    current = nil; 
    depth = 0; 
    "dive_at" = "0xd000000000140000 <x-coredata://2B6F1E6F-1EDA-4910-91FA-0593E05F9EB2/DiveSite/p5>"; 
    id = nil; 
    latitude = 0; 
    longitude = 0; 
    rating = 5; 
    "sea_condition" = nil; 
    temperature = 0; 
    time = nil; 
    weather = nil; 
}) 
raw dive site rating is 5.35679601527854e-315 
dive rating is 1.06203402623994e-314 
dive site rating is 1.06203402623994e-314 

Swift de DiveLog nesne olarak altındadır ... konsolda ne basılmış oldu edilir. Bu konuda gerçekten bir fikrim yok. Derecelendirme özellikleri alırken bir şey sınır dışı görünüyor?

import Foundation 
import CoreData 

extension DiveLog { 

    @NSManaged var time: NSDate? 
    @NSManaged var latitude: NSNumber? 
    @NSManaged var id: String? 
    @NSManaged var rating: NSNumber? 
    @NSManaged var depth: NSNumber? 
    @NSManaged var temperature: NSNumber? 
    @NSManaged var weather: String? 
    @NSManaged var current: String? 
    @NSManaged var sea_condition: String? 
    @NSManaged var longitude: NSNumber? 
    @NSManaged var dive_at: DiveSite? 

} 
+0

NSNumber'i kullandığınızı görüyorum. Swift Double tipini doğrudan kullanabilmeniz için bunun bir sebebi var mı? Ayrıca, rating.doubleValue ile NSNumber değerine erişmeniz gerektiğine inanıyorum. Doğrudan erişemezsin. – VojtaStavik

+0

bu değerin sadece 0 olması gerektiği anlamına gelmiyor (ve bu makul bir yaklaşımdır)? – DeFrenZ

+0

"Derecelendirme" isteğe bağlı olduğundan, 'dive.rating!' Yazdıysanız ne olur? –

cevap

1

az önce ne emin değilim ama ben XCode 7.3 yükseltilmiş ve bir şekilde sorun giderilmiştir değil. Sorunun IDE'nin kendisiyle mi olduğunu tahmin ettim?