【问题标题】:How to make method spit out different things如何让方法吐出不同的东西
【发布时间】:2015-03-12 21:42:49
【问题描述】:

我正在努力让它发挥作用。我有一个函数,那就是把它录入 coreData 并抓取

  1. 所有例程
  2. 某个套路

如果是这样:

1 -> 它需要将routineNames 输出为 NSArray
2 -> 然后将其作为 NSManagedObject 输出。

var routineNames:AnyObject!
func GetRoutines(type: String) -> AnyObject {

    routineNames = []

    var request = NSFetchRequest(entityName: "Routines")

    let sort = NSSortDescriptor(key: "name", ascending: false)
    let sortDescriptors = [sort]

    request.sortDescriptors = sortDescriptors
    request.returnsObjectsAsFaults = false

    var results = context.executeFetchRequest(request, error: nil)

    if results?.count > 0 {

        if type == "AllRoutines" {

            for result: AnyObject in results! {

                if result.valueForKey("name") != nil {

                    routineNames.append(result.valueForKey("name") as String)

                    //println(routineNames)

                }

            }

        } else {

            for result: AnyObject in results! {

                if result.valueForKey("name") as String == type {

                  routineNames = result

                }
            }

        }
    }
    return routineNames
}

【问题讨论】:

  • 使用两个函数可能会更容易。一种检索特定对象,一种检索所有对象。而不是获取所有并检查 type = "AllRoutines" 只是使用 NSPredicate

标签: ios swift core-data methods nsmanagedobject


【解决方案1】:

我设法做到了:

func GetRoutines(type: String) -> AnyObject {

    routineNames = []

    var request = NSFetchRequest(entityName: "Routines")

    let sort = NSSortDescriptor(key: "name", ascending: false)
    let sortDescriptors = [sort]

    request.sortDescriptors = sortDescriptors
    request.returnsObjectsAsFaults = false

    var results = context.executeFetchRequest(request, error: nil)

    if results?.count > 0 {

        if type == "AllRoutines" {

            for result: AnyObject in results! {

                if result.valueForKey("name") != nil {

                    routineNames.append(result.valueForKey("name") as String)

                    //println(routineNames)

                }

            }

        } else {

            for result: AnyObject in results! {

                if result.valueForKey("name") as String == type {

                    println(result)

                    return result

                }
            }

        }
    }
    return results!
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多