【问题标题】:Swift / core data fetching to array when sending message to multiple recipients向多个收件人发送消息时将 Swift / 核心数据提取到数组
【发布时间】:2015-03-02 20:59:24
【问题描述】:

我正在尝试从核心数据中获取电话号码并将短信发送给多个收件人。

使用 for 循环获取数字,但我不能在 for 循环之外使用它。 (我可以将它们写入控制台但不能写入 "messageVC.recipients = tela;"

错误是“使用未解析的标识符”我正在使用 Xcode6

这是我的代码;

@IBAction func sendMessages(sender: AnyObject) {

    let entityDescription =
    NSEntityDescription.entityForName("Person",
        inManagedObjectContext: managedObjectContext!)

    let request = NSFetchRequest()
    request.entity = entityDescription

    var error: NSError?

    var objects = managedObjectContext?.executeFetchRequest(request,
        error: &error)

    if let results = objects {

        if results.count > 0 {
            var saydir = results.count - 1
            for (var i=0; i < results.count; i++) {
                let match = results[i] as NSManagedObject
                var tela = match.valueForKey("number") as String
                println(tela)
            }

        } else {

        }

    }

    var messageVC = MFMessageComposeViewController()
    messageVC.recipients = tela;
    messageVC.body = "text1" + "text2";
    messageVC.messageComposeDelegate = self;

    self.presentViewController(messageVC, animated: false, completion: nil)
}

【问题讨论】:

    标签: ios xcode swift core-data


    【解决方案1】:

    var tela = match.valueForKey("number") as String 的范围在您的 for 循环内(即在您的 for 循环外无法访问)。

    你要么必须:

    • 在外部创建您的 var(将其放置在您将使用它的相同范围内);
    • 在您拥有的实际 tela 变量旁边执行您的操作。

    编辑 1:

    代码可能是这样的(未经测试):

    @IBAction func sendMessages(sender: AnyObject) {
    
        let entityDescription =
        NSEntityDescription.entityForName("Person",
            inManagedObjectContext: managedObjectContext!)
    
        let request = NSFetchRequest()
        request.entity = entityDescription
    
        var error: NSError?
    
        var recipients = [String]()
    
        if let results = managedObjectContext?.executeFetchRequest(request,
            error: &error) {
    
            if results.count > 0 {
                var saydir = results.count - 1
                for (var i=0; i < results.count; i++) {
                    let match = results[i] as NSManagedObject
                    var tela = match.valueForKey("number") as String
                    println(tela)
    
                    recipients.append(tela)
                }
    
            } else {
    
            }
    
        }
    
        var messageVC = MFMessageComposeViewController()
        messageVC.recipients = recipients;
        messageVC.body = "text1" + "text2";
        messageVC.messageComposeDelegate = self;
    
        self.presentViewController(messageVC, animated: false, completion: nil)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多