HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用未申报的“AppDelegate”Swift大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚花了半天时间来解决一个问题.
我正在使用 Swift语言测试CoreData.
按照 this教程@R_149_6944@.

但是,在我尝试修改structure和我的代码之后,“src”和其中的组是文件夹,而不仅仅是由xCode创建的组.

NSSExpense.swift

import Foundation
import CoreData

class NSSExpense: NsmanagedObject {

    @Nsmanaged var name: String
    @Nsmanaged var descr: String
    @Nsmanaged var value: NSnumber
    @Nsmanaged var isMonthly: NSnumber
    @Nsmanaged var payDayInMonth: NSnumber

    class func createInManagedObjectContext(moc: NsmanagedObjectContext,name: String,value: Double,payDayInMonth: Int16,isMonthly: Bool,descr: String!) -> NSSExpense {
        let newExpense = NSEntityDescription.insertNewObjectForEntityForName("NSSExpense",inManagedObjectContext: moC) as NSSExpense

        newExpense.name = name
        newExpense.value = NSnumber(double: value)
        newExpense.payDayInMonth = NSnumber(short: payDayInMonth)
        newExpense.isMonthly = NSnumber(bool: isMonthly)

        if let expenseDesctiption = descr {
            newExpense.descr = expenseDesctiption
        } else {
            newExpense.descr = ""
        }

        return newExpense
    }
}

NSSDataManager.swift

import UIKit
import CoreData

class NSSDataManager: NSObject {

    class var sharedDataManager: NSSDataManager {
        struct Static {
            static var instance: NSSDataManager?
            static var token: dispatch_once_t = 0
        }

        dispatch_once(&Static.token) {
            Static.instance = NSSDataManager()
        }

        return Static.instance!
    }

    lazy var managedObjectContext : NsmanagedObjectContext? = {
        // Error at the next line "Use of undeclared type 'NSSAppDelegate'"
        let appDelegate = UIApplication.sharedApplication().delegate as NSSAppDelegate

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

    var expensesInMemory : [NSSExpense] {
        get {
            let fetchrequest = NSFetchrequest(entityName: "NSSExpense")
            if let fetchResults = managedObjectContext!.executeFetchrequest(fetchrequest,error: nil) as? [NSSExpense] {
                return fetchResults
            } else {
                return [NSSExpense]()
            }
        }
    }

    func addExpenseWithName(name: String,descr: String!) -> NSSExpense {
        return NSSExpense.createInManagedObjectContext(managedObjectContext!,name: name,value: value,payDayInMonth: payDayInMonth,isMonthly: isMonthly,descr: descr?)
    }

}

我试图用不同的方式解决这个问题:
1)创建新项目(Swift主要语言)并重新构建相同的结构(失败)
2)创建新项目(Objective-C主要语言).所以我有AppDelegate.h和AppDelegate.m.使用桥接头将其添加到Swift文件.同样的问题. (失败)

真的很有趣的事情如果我把下一个代码放在ViewController.swift中,它会自动创建新项目,一切都可以正常运行.但是当我把这个代码放到任何其他类上.我编码这个错误.

lazy var managedObjectContext : NsmanagedObjectContext? = {
        // Error at the next line "Use of undeclared type 'NSSAppDelegate'"
        let appDelegate = UIApplication.sharedApplication().delegate as NSSAppDelegate

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

[更新1]

我已经尝试在与NSSAppDelegate.swift相同的文件夹中创建另一个类,现在一切正常.但是它仍然是一个问题,我如何使用其他文件夹中存储的类?

[更新2]

只是试图在其他项目中做同样的事情.
如果文件结构如this所以AppDelegate.swift和NGDataManager.swift在同一个文件夹中,一切都很好用.
但是,如果我把NGDataManager.swift放在’src’文件夹里面,比如this(不只是组,文件夹),就会发生error.可能我应该为此创建另一个问题.

[更新3]

我不知道如何,但你可以忘记我在UDATE 2中所说的一切.因为现在这一切都不行.我甚至用CoreData命名为“Test”创建一个新项目,只需创建一个名为“TESTClass”的新类.魔法在下面的事情:如果我把这个代码放在TESTClass.swift内

import UIKit

class TESTClass: NSObject {
    func someFunc() {
        let appDel = UIApplication.sharedApplication().delegate as AppDelegate
    }
}

发生错误.但是如果我把这行放在ViewController.swift中的viewDidLoad中,这是由xCode自动生成

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let appDel = UIApplication.sharedApplication().delegate as AppDelegate
    }
}

他们没有错误,一切都很好.我不知道该说些什么…

您可能会看到AppDelegate代码here,但是我没有修改任何由xCode自动生成内容.我创建了一个具有this设置的单一视图应用程序.

解决方法

很有可能当您创建项目时,您还创建了一个{ProjectNamE} Tests”目标.问题是AppDelegate没有在“{ProjectNamE} Tests”目标中分配成员资格.

选择AppDelegate.swift,然后在右侧检查器中单击文件检查器(纸张图标),然后确保在“目标成员资格”中,您的项目和测试目标复选标记都设置为ON.

清洁,重建.

大佬总结

以上是大佬教程为你收集整理的ios – 使用未申报的“AppDelegate”Swift全部内容,希望文章能够帮你解决ios – 使用未申报的“AppDelegate”Swift所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。