ios - 向多个收件人发送消息时,快速/核心数据提取到数组

标签 ios xcode swift core-data

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

使用 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)
}

最佳答案

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)
}

关于ios - 向多个收件人发送消息时,快速/核心数据提取到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819329/

相关文章:

swift - struct(不变性)与线程安全有何关系

ios - XCode 总是忘记导入的框架

ios - 解析,无法从 iOS 应用程序中删除 PFObject?

ios - whatsapp 共享不工作(相同的代码在另一个项目中工作)

iphone - Xcode——将一个静态库嵌入到另一个静态库中?

iOS 9 Bundle 需要 iPad 支持的启动 Storyboard

ios - react native : I can run the application on iOS simulator but not on real device

iphone - CABasic动画旋转

xcode - 选择推送通知横幅时调用的方法

ios - 尝试以 swift 2 重载错误的形式读取 JSON 文件