【问题标题】:SwiftCoreDataHelper.swift error in xcode 7xcode 7中的SwiftCoreDataHelper.swift错误
【发布时间】:2016-03-15 15:56:44
【问题描述】:

可以帮助我解决 SwiftCoreDataHelper.swift 中的以下三个错误。我正在使用 xcode 7,但它似乎是旧版本 xcode 的代码。提前致谢。

1 . . .

行错误:让项目:NSArray = managedObjectContext.executeFetchRequest() 错误:调用可以抛出,但它没有用'try'标记并且错误 不处理

 class func fetchEntities(className:NSString, withPredicate predicate:NSPredicate?, managedObjectContext:NSManagedObjectContext)->NSArray{
    let fetchRequest:NSFetchRequest = NSFetchRequest()
    let entetyDescription:NSEntityDescription = NSEntityDescription.entityForName(className as String, inManagedObjectContext: managedObjectContext)!

    fetchRequest.entity = entetyDescription
    if predicate != nil {
        fetchRequest.predicate = predicate!
    }

    fetchRequest.returnsObjectsAsFaults = false
    let items: NSArray = managedObjectContext.executeFetchRequest(<#T##request: NSFetchRequest##NSFetchRequest#>)

    return items
}

2 。 . .

行错误:如果 managedObjectContext.save(nil) {

错误:Nil 与预期的参数类型 '()' 不兼容

class func saveManagedObjectContext(managedObjectContext:NSManagedObjectContext)->Bool{
    if managedObjectContext.save(nil) {
        return true
    }
    else {
        return false
    }
}

3 . . .

行错误:if storeCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error:&error) != nil {

错误:上下文类型“[NSObject : AnyObject]”不能与 数组字面量

 if storeCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error:&error ) != nil {

    if error != nil {
        print(error!.localizedDescription)
        abort()
    }
 }

【问题讨论】:

  • 对不起。新手来了感谢指正
  • 说清楚每一行代码的哪一行会产生编译错误。
  • "调用可以抛出,但是没有标记'try'并且错误没有被处理""Nil与预期的参数类型不兼容'()'" 表示您的代码不适应 Swift 2 中的新错误处理。您会发现许多与该主题相关的问答,尤其是第一个错误信息。例如:Swift 2 ( executeFetchRequest ) : error handling。我强烈建议您阅读当前 Swift 文档中有关错误处理的内容。

标签: swift xcode7


【解决方案1】:
  1. 阅读dotrythrowcatch。如果调用抛出,您应该将其包含在 do 块中并使用 catch 处理错误。
  2. 删除零。预计不会有任何争论。然后,您可能必须处理抛出的错误。
  3. 不太清楚这里的错误是什么,但这需要转换为 Swift 2 错误处理,并且应该看起来像这样。请注意,错误参数已成为抛出的错误。这是未经测试的,不保证绝对正确。

    do {
      let coordinator = try storeCoordinator.addPersistentStoreWithType(
            NSSQLiteStoreType, 
            configuration: nil, 
            URL: url, options: nil)
    } catch {
      print(error)
      abort()
    }
    

【讨论】:

  • 我已经做了尝试抛出但现在我的错误是使用未解析的标识符“项目”这是我的代码:
  • do{ let items = 尝试 managedObjectContext.executeFetchRequest(fetchRequest) } catch { print("error") } return items } do{ let items = try managedObjectContext.executeFetchRequest(fetchRequest) } catch { print( “错误”)}返回项目}
  • 项目在您尝试退货时超出范围。将let items = 替换为return,您可能希望从catch 块内返回nil 或[]。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2015-09-24
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多