Swift / 向多个收件人发送消息时将核心数据提取到数组
Swift / core data fetching to array when sending message to multiple recipients
我正在尝试从核心数据中获取 phone 号码并向多个收件人发送短信。
正在使用 for 循环获取数字,但我不能在 for 循环之外使用它。 (我可以将它们写入控制台但不能写入 "messageVC.recipients = tela;"
错误是 "Use of unresolved identifier" 我正在使用 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)
}
我正在尝试从核心数据中获取 phone 号码并向多个收件人发送短信。
正在使用 for 循环获取数字,但我不能在 for 循环之外使用它。 (我可以将它们写入控制台但不能写入 "messageVC.recipients = tela;"
错误是 "Use of unresolved identifier" 我正在使用 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)
}