GkNx
GkNx

Reputation: 169

Swift / core data fetching to array when sending message to multiple recipients

I am trying to fetch phone numbers from core data and send sms message to multiple recipients.

Fetching numbers with for loop but i can't use it outside of the for loop. (I can write them to console but can not write into the "messageVC.recipients = tela;"

Error is "Use of unresolved identifier" I am using Xcode6

Here is my code ;

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

Upvotes: 0

Views: 696

Answers (1)

lchamp
lchamp

Reputation: 6612

The scope of your var tela = match.valueForKey("number") as String is within your for-loop (i.e. not accessible outside your for-loop).

You either have to :

  • create your var outside (placing it at the same scope of where you'll be using it) ;
  • do your action next to the actual tela variable you have.

Edit 1 :

The code could be something like this (not tested) :

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

Upvotes: 1

Related Questions