Arrays 用一个核心数据属性填充数组

Arrays 用一个核心数据属性填充数组,arrays,swift,core-data,Arrays,Swift,Core Data,将一个属性中的条目放入数组时遇到一些问题。然后将在UIPickerview中使用此数组。语言敏捷 swift中有许多关于Pickerviews和swift中核心数据的教程。但我还没有找到一个解释如何仅用一个属性填充数组的方法 更糟糕的是,我在将目标c转换为swift方面仍然做得很差 所以我有两个问题: 1我的解决方案是否正确:从一个属性构建一个数组,然后用该数组中的内容填充Pickerview 2如何在swift中获得该阵列 链接的目标C: NSManagedObjectContext *man

将一个属性中的条目放入数组时遇到一些问题。然后将在UIPickerview中使用此数组。语言敏捷

swift中有许多关于Pickerviews和swift中核心数据的教程。但我还没有找到一个解释如何仅用一个属性填充数组的方法

更糟糕的是,我在将目标c转换为swift方面仍然做得很差

所以我有两个问题:

1我的解决方案是否正确:从一个属性构建一个数组,然后用该数组中的内容填充Pickerview

2如何在swift中获得该阵列

链接的目标C:

NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]
                                initWithEntityName:@"WeightLog"];
self.contactarray = [[managedObjectContext executeFetchRequest:fetchRequest
                                                         error:nil] mutableCopy];

titleNames = [[NSMutableArray alloc] init];
for (int i =0; i<=self.contactarray.count; i++) {
    NSManagedObject *device = [self.contactarray objectAtIndex:i];
    [titleNames addObject:device];
}
谢谢大家!

编辑: 工作代码

var myTitle: String = ""


var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
        var context:NSManagedObjectContext = appDel.managedObjectContext!

        let fetchRequest = NSFetchRequest(entityName:"MyEntity")
        var myTitles: [String] = []
        if let myLogs = context.executeFetchRequest(fetchRequest, error: nil) {
            myTitles = myLogs.map { $0.myTitle } // get an array of the 'myTitle' attributes
            println(myTitles)

我只是在这里输入,所以不确定它是否编译:

let moc = self.managedObjectContext()
let fetchRequest = NSFetchRequest(entityName:"WeightLog")
var titleNames: [String] = []
if let weightLogs = moc.executeFetchRequest(fetchRequest, error: nil) as? [WeightLog] {
  titleNames = weightLogs.map { $0.title } // get an array of the 'title' attributes
}
如果您从一个方法返回titleNames数组,那么我会这样写,即不使用var titleNames:


这会在if-let行上引发很多错误:带有getter/setter的变量不能具有初始值Computed属性必须具有显式类型…这在一次更改后生效:as?[WeightLog]给出了错误,所以我删除了它。printltitlenames nog只提供一个属性项的数组。
let moc = self.managedObjectContext()
let fetchRequest = NSFetchRequest(entityName:"WeightLog")
var titleNames: [String] = []
if let weightLogs = moc.executeFetchRequest(fetchRequest, error: nil) as? [WeightLog] {
  titleNames = weightLogs.map { $0.title } // get an array of the 'title' attributes
}
let moc = self.managedObjectContext()
let fetchRequest = NSFetchRequest(entityName:"WeightLog")
if let weightLogs = moc.executeFetchRequest(fetchRequest, error: nil) as? [WeightLog] {
  return weightLogs.map { $0.title } // get an array of the 'title' attributes
} else {
  return []
}
lazy  var managedObjectContext : NSManagedObjectContext? = {   
    let appDelegate  = UIApplication.sharedApplication().delegate as AppDelegate

    if let managedObjectContext  = appDelegate.managedObjectContext 
    {
        return managedObjectContext
    }
    else 
    {
        return nil
    }
}()

let fetchRequest = NSFetchRequest(entityName: "Entity")

if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [Entity] 
{

    for info in fetchResults
    {
        println(info.valueForKey("keyname"));
    }
}