2

Im declaring and empty array to be used with a fetch request as followed:

var myList: Array<AnyObject> = []

However, was this code entered, I get this message that pops up and disables the editor: "SourceKitService Terminated. Editor Functionality temporarily limited"

Anybody know what this is about? Should I be declaring my array differently using Swift. I want an array to store my fetch request.

myList = context.executeFetchRequest(freq, error: nil)

Here is the whole code:

import UIKit
import CoreData

class ListTableViewController: UITableViewController {

var myList: [AnyObject] = []

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func viewDidAppear(animated: Bool) {

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext
    let freq = NSFetchRequest(entityName: "List")

    //populate array
    myList = context.executeFetchRequest(freq, error: nil)

    tableView.reloadData()

}

// #pragma mark - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1
}

override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    return myList.count
}


override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? {
    let CellID:NSString = "Cell"
    var cell: UITableViewCell = tableView?.dequeueReusableCellWithIdentifier(CellID) as UITableViewCell


    return cell
}


/*
// Override to support conditional editing of the table view.
override func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
    // Return NO if you do not want the specified item to be editable.
    return true
}
*/

/*
// Override to support editing the table view.
override func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
    if editingStyle == .Delete {
        // Delete the row from the data source
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
    } else if editingStyle == .Insert {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }    
}
*/

/*
// Override to support rearranging the table view.
override func tableView(tableView: UITableView!, moveRowAtIndexPath fromIndexPath: NSIndexPath!, toIndexPath: NSIndexPath!) {

}
*/

/*
// Override to support conditional rearranging of the table view.
override func tableView(tableView: UITableView!, canMoveRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
    // Return NO if you do not want the item to be re-orderable.
    return true
}
*/

/*
// #pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

}

2 Answers 2

2

The simplest way of declaring Empty array for any type of object in swift is

    var emptyArray = [AnyObject]()
Sign up to request clarification or add additional context in comments.

Comments

0

No this is perfectly fine. This error was coming because of problem in Xcode Close your xcode and try again

var myList: Array<AnyObject> = []

I have tested it on Xcode beta 3

There are also other syntax to declare array.You can use in xcode beta 3

var myList: Array<AnyObject> = Array<AnyObject>()
var myList2: [AnyObject] = []

in xcode beta 1 & 2

var myList: Array<AnyObject> = Array<AnyObject>()
var myList2: AnyObject[] = []

EDIT Actually problem is not of mylist.As you comment the myList: Array<AnyObject> = [] line this will create error so compiler stops compiling.If you remove error by hard-coding the values it start giving sourcekiterror again.

Actual problem is in this line

      var cell: UITableViewCell = tableView?.dequeueReusableCellWithIdentifier(CellID) as UITableViewCell

remove the ? from tableView? as this is not needed.It is for declaring optional not for unwrapping.For unwrapping you can use !.But as tableView: UITableView! is declared as implicit optional so it will unwrap automatically.No need to do any unwrapping. Replace the cellForRowAtIndexPath: with below function all will work fine.

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? {
    let CellID:NSString = "Cell"
    //Removed ? from tableview?
    var cell: UITableViewCell = tableView?.dequeueReusableCellWithIdentifier(CellID) as UITableViewCell


    return cell
}

7 Comments

Ive exited the program multiple times, restarted computer, etc. If I comment out this piece of code, then it works just fine. Their is something about this line that is triggering it.
@ScottMuhs which xcode beta version you are using??
hmmm....both of these new ways you have suggested cause the same thing to happen.
try var myList: Array<AnyObject> = Array<AnyObject>() and var myList2: [AnyObject] = []
also...if i remove myList.count from numberOfRowsInSection, the error goes away. Could it be this?
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.