2016-04-12 24 views
0

私は配列に入れる前にレコードのIDを確認しようとしています。xcode swift'String ?!'型の値を変換できません。期待される引数型 'Notifications'へ

ここにコードがあります。しかし、次のエラーが表示されます。

Notifications.swift:50:46: 'String ?!'型の値を変換できません。期待される引数の型[通知]このライン

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

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

どうすれば*エラーメッセージが表示されるのかわかりません。 'String'を返すメソッドに' String? 'を送るというエラーメッセージが出ることを期待していますが、このコードの可読性を知っている多くの問題があります。 – nhgrif

+0

はい..申し訳ありませんがコードをつかんでいますどこからでも、funcを追加しました。とにかくありがとう :) – hesh

答えて

0

このエラーを説明するためのいくつかのいずれかの助けはあなたの方法の一つは、静的であり、他方ができますそうでない:

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

あなたは多くの読みやすさの問題があるようなコードがしかし、過去のコンパイルを動作する場合は、静的な、何の両方を宣言していない、または

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

ことで

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

わからない置き換えることができます達成したい内容に応じて

関連する問題