
我正在使用 Swift语言测试CoreData.
按照 this教程一切工作正常.
但是,在我尝试修改structure和我的代码之后,“src”和其中的组是文件夹,而不仅仅是由xCode创建的组.
NSSExpense.swift
import Foundationimport CoreDataclass 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 UIKitimport CoreDataclass 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 UIKitclass TestClass: NSObject { func someFunc() { let appDel = UIApplication.sharedApplication().delegate as AppDelegate }} 发生错误.但是如果我把这行放在VIEwController.swift中的vIEwDIDLoad中,这是由xCode自动生成的
import UIKitclass 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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)