标签: core-data

核心数据崩溃:在实体中找不到Keypath项目

- (void)fetchResult
{
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Project" ascending:YES];

    [request setEntity:self.entityDescription];
    [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
    self.fetchResultController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];

    NSError *fetchError = nil;
    BOOL success = [self.fetchResultController performFetch:&fetchError];
    if (success) {
        NSLog(@"fetched!");
    }
    else {
    NSLog(@"fetch fail!");
    }
}
Run Code Online (Sandbox Code Playgroud)

entityDescription和context是在viewDidLoad方法中设置的,如下所示:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
self.entityDescription = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

崩溃信息: *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'在实体中找不到keypath项目'


有人可以伸手吗?;)

iphone core-data nsfetchedresultscontroller nsfetchrequest

0
推荐指数
2
解决办法
6315
查看次数

设置NSManagedObject的属性后,NSFetchRequest.fetchOffset中断

我编写了一种从数据库中随机获取记录的方法,但是无论NSFetchRequest.fetchOffset是什么,我经常会得到相同的记录。

所以我做了一个实验,这是我的代码:

- (Card *)getNextCard {
    Card *card = nil;
    while (YES) {
        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Card"];
        request.fetchLimit = 1;
        request.fetchOffset = arc4random_uniform(1031);

        NSError *error = nil;
        NSArray *matches = [self.database.managedObjectContext executeFetchRequest:request error:&error];

        if (matches) {
            card = [matches lastObject];
            // card.phEn= @"phonetic";
        }
        NSLog(@"nextCard: %@, %d", card ? card.en : card, request.fetchOffset);
    }
    return card;
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,日志就像:

2013-05-07 23:11:16.035 MyApp[20598:707] nextCard: astound, 153
2013-05-07 23:11:17.175 MyApp[20598:707] nextCard: complicate, 370
2013-05-07 23:11:18.335 MyApp[20598:707] nextCard: hasten, 954
2013-05-07 23:11:19.801 MyApp[20598:707] …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchrequest

0
推荐指数
1
解决办法
249
查看次数

核心数据:访问属性的两种不同方式,只有一种工作方式

对于以下代码,在下面两行之前的两个注释中,只有第一个有效.

NSManagedObject * Event = [NSEntityDescription insertNewObjectForEntityForName:str inManagedObjectContext:app.managedObjectContext]; 
//Work but strange
[Event setValue:[NSNumber numberWithInt:buf4[v+h]] forKey:value]; 
 //Error
Event.value= [NSNumber numberWithInt:buf4[v+h]]; 
Run Code Online (Sandbox Code Playgroud)

第二次返回并出错

request for member 'value' in 'Event', which is of non-class type 'NSManagedObject*'
Run Code Online (Sandbox Code Playgroud)

iphone core-data key-value-coding nsmanagedobject

-1
推荐指数
1
解决办法
631
查看次数

用于查找自日期以来x天的核心数据谓词

我有核心数据模型:

Book
----
name 
release_date 
Run Code Online (Sandbox Code Playgroud)

我需要从release_date中获取至少两天的所有书籍,
并且我想要这样做NSPredicate(不要将所有书籍加载到内存中,而不是循环和检查)

我正在寻找的是这样的:

NSDate *now = [NSDate date];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"release_date + "48 hours" <= %@", now];
Run Code Online (Sandbox Code Playgroud)

iphone core-data objective-c nspredicate ios

-1
推荐指数
1
解决办法
225
查看次数

将NSDictionary保存在coreData中

我必须将字典存储在核心数据中。我以前从未使用过核心数据。

任何人都可以帮助我,如何在现有项目中使用核心数据并将其用于存储Dictionary。

core-data nsdictionary ios

-1
推荐指数
1
解决办法
5292
查看次数

如何在Swift中查询Core Data中两个日期之间的日期?

我有一个(NSManagedObject)类被调用TodoItem,它有两个日期属性(startDateendDate),我想查询此类对象的核心数据.这是代码:

import CoreData

class TodoItem: NSManagedObject {
    @NSManaged var name: String!
    @NSManaged var addedDate: NSDate!
    @NSManaged var doneDate: NSDate!
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我想为当前时间创建另一个日期对象,var currentDate = NSDate()并查询它们和之间的所有TodoItem对象.currentDateaddedDatedoneDate

我怎样才能做到这一点?

core-data ios swift

-1
推荐指数
1
解决办法
2462
查看次数

数组索引超出范围 - 可选解除绑定时出错

我有一个名为type Settings的属性调用的实体,如果它是1,那么视图控制器将具有白色背景,如果为0,则背景为深灰色.backgroundColorInt

但是在尝试打开视图控制器时出现以下错误;

致命错误:数组索引超出范围

对于我的函数中的以下行

    if settingsArray.count == 1 {
        setting = settingsArray[1]
    } else if settingsArray.count <= 0 {
      println("No settings in array")
    }
Run Code Online (Sandbox Code Playgroud)

查看控制器

var settingsArray: [Settings]! 
var setting: Settings!
var backgroundSetting: Bool = true

override func viewWillAppear(animated: Bool) {
    backgroundSettings()
}

override func viewDidLoad() {
    super.viewDidLoad()
    backgroundSettings()
}

// Function to fetch settings and change background
func backgroundSettings() {

    var error: NSError?
    let request = NSFetchRequest(entityName: "Settings")
    self.settingsArray = moc?.executeFetchRequest(request, …
Run Code Online (Sandbox Code Playgroud)

arrays core-data optional ios swift

-1
推荐指数
1
解决办法
397
查看次数

如何删除表视图核心数据中的行.斯威夫特3

我一直在研究如何从表视图中删除数据在Core Data中的行.我在网上找不到任何可以帮助我处理代码的内容.我是Core Data的新手,所以我对它并不是很了解.

提前致谢

这是我的代码

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return}

    let managedContext = appDelegate.persistentContainer.viewContext

    let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "OfficialPT")
    fetchRequest.sortDescriptors = [NSSortDescriptor(key:"createdAt",ascending:false)]


    do {
        AirForceDatabase = try managedContext.fetch(fetchRequest)
    } catch let error as NSError {
        print("Could not fetch. \(error), \(error.userInfo)")
    }
}

func SideMenus ()
{
    if revealViewController() != nil {
        MenuButton.target = revealViewController()
        MenuButton.action = #selector(SWRevealViewController.revealToggle(_:))
        revealViewController().rearViewRevealWidth = 275
        revealViewController().rightViewRevealWidth = 160

        // profileButton.target = revealViewController()
        // …
Run Code Online (Sandbox Code Playgroud)

xcode core-data uitableview iphonecoredatarecipes swift3

-1
推荐指数
1
解决办法
1565
查看次数

如何更新Core Data中的现有对象?

我想更新Core Data中的对象.这是我的代码:

var detailTaskModel: TaskModel!
detailTaskModel.date = dateFromDP         //update value

let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
appDelegate.saveContext()
Run Code Online (Sandbox Code Playgroud)

我正在使用NSFetchedResultsController和Swift.

更新:

var fetchedResultsController: NSFetchedResultsController = NSFetchedResultsController()
Run Code Online (Sandbox Code Playgroud)

我的func用于加载CoreData数据:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell: TaskCell = tableView.dequeueReusableCellWithIdentifier("myCell") as TaskCell

    let thisTask = fetchedResultsController.objectAtIndexPath(indexPath) as TaskModel
    cell.textLabel?.text = thisTask.task
    return cell
}
Run Code Online (Sandbox Code Playgroud)

保存CoreData:

let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let entityDescription = NSEntityDescription.entityForName("TaskModel", inManagedObjectContext: managedObjectContext!)
let task = TaskModel(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)
task.task = labelText
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject ios swift

-2
推荐指数
1
解决办法
5808
查看次数

CoreData:重新加载数据返回UITableView之前

我知道核心数据与UITableViewController非常相关,但是我有一个应用程序,它有两个页面,您可以更新数据,如果我能看到每个页面的相关标签中反映的更新值而不必返回,那将是很好的到UITableViewController并使用tableView.reloadData().有没有办法实现这个目标?谢谢

编辑:我添加了一个图表,我希望让我的问题更清晰一些.我想在视图D中对托管对象进行更新,我可以确认(通过println)已经按预期工作,但是当我使用poptoViewController C时,没有任何改变,我看到过时的信息.只有当我返回到桌面视图A时,才会在UI中对对象进行更改.那么我有没有办法在视图C上重新加载对象而不必回到A?

编辑#2:阅读下面的回复(谢谢!)后,我认为我的问题归结为如何在没有UITableView的ViewController上实现NSFetchedResultsController的功能?

在此输入图像描述

core-data ios swift

-2
推荐指数
1
解决办法
861
查看次数