2016-04-12 28 views
0

Burada xcode hızlı'String ?!' türünün değeri dönüştürülemiyor beklenen argüman türüne 'Bildirimler'

kullanarak, ben diziye koymadan önce bir kaydın kimliğini kontrol çalışıyorum koddur. Ancak, aşağıdaki hata iletisini aldım

Bildirimler.swift: 50: 46: 'String ?!' türünün değeri dönüştürülemiyor beklenen argüman türüne 'Bildirimler' bu hat üzerinde

*if (readRecordCoreData(result["MessageID"])==false)* 

bazı biri yardım bu hatayı

senin yöntemlerden
import CoreData 

struct Notifications{ 

var NotifyID = [NSManagedObject]() 

    let MessageDesc: String 
    let Messageid: String 


init(MessageDesc: String, Messageid:String) { 

    self.MessageDesc = MessageDesc 
    self.Messageid = Messageid 
    // self.MessageDate = MessageDate 



} 

static func MessagesWithJSON(results: NSArray) -> [Notifications] { 
    // Create an empty array of Albums to append to from this list 

    var Notification = [Notifications]() 

    // Store the results in our table data array 
    if results.count>0 { 

     for result in results { 

      //get fields from json 

      let Messageid = result["MessageID"] as! String 
      let MessageDesc = result["MessageDesc"] as? String 

      let newMessages = Notifications(MessageDesc: MessageDesc!, Messageid:Messageid) 



      //check with id's from core data 
      if (readRecordCoreData(result["MessageID"])==false) 
       { 

       Notification.append(newMessages) 
      } 



     } 
    } 
    return Notification 
} 

//check id 
func readRecordCoreData(Jsonid: String) -> Bool { 

    var idStaus = false 

    let appDelegate = 
     UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    //2 
    let fetchRequest = NSFetchRequest(entityName: "ItemLog") 


    //3 
    do { 

     let resultsCD = try! managedContext.executeFetchRequest(fetchRequest) 



     if (resultsCD.count > 0) { 

      for i in 0 ..< resultsCD.count { 
       let match = resultsCD[i] as! NSManagedObject 
       let id = match.valueForKey("notificationID") as! String 

       if (Jsonid as String! == id) 
       { 
        idStaus = true 

       } 
       else{ 

        idStaus = false 

       } 

      } 
     } 

    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 

    return idStaus 

} 
+3

Nasıl * bu * hata mesajını göremiyorum. 'String'' için' String' denen bir yönteme 'gönderme ile ilgili bir hata mesajı almanızı beklerdim, fakat bu kodun okunabilirliği ile ilgili çok fazla sorun var ki ... – nhgrif

+0

evet .. özür dilerim bir yerden ve func ekledi. Yine de teşekkürler :) – hesh

cevap

0

Bir statik ve diğeri açıklamak olabilir Lütfen değil:

func readRecordCoreData(Jsonid: String) -> Bool 
static func MessagesWithJSON(results: NSArray) -> [Notifications] 

birçok okunabilirliği sorunları vardır gibi kod ancak geçmiş derleme çalışacaktır eğer statik, hiçbiri hem beyan veya

//check with id's from core data 
if (readRecordCoreData(result["MessageID"])==false) 
{ 
    Notification.append(newMessages) 
} 

By

//check with id's from core data 
if (Notifications.readRecordCoreData(Messageid)==false) 
{ 
    Notification.append(newMessages) 
} 

emin değil yerini alabilir başarmak istediğinize bağlı

İlgili konular