1

核心数据有问题吗,因为xcode 4.3.2 我正在按照我在此处 下载文件Stanford Paul Hegarty class for ios 5.0 的核心数据演练进行操作(Video 14 Core data demo)

我运行了它,xcode 4.3.2但核心数据似乎不起作用,因为tableview没有出现。我试图在另一台计算机上运行它,xcode 4.2并且ios 5.0 遇到相同问题的任何人都可以正常工作?我很确定这xcode是错的。

4

3 回答 3

2

Paul Hegarty after his class, has published an update version of his code which have a call to SAVE the CoreData database! This may be the reason why your CoreData informations doesn't persist.

His update note was:

// should probably saveToURL:forSaveOperation:(UIDocumentSaveForOverwriting)completionHandler: here!
// we could decide to rely on UIManagedDocument's autosaving, but explicit saving would be better
// because if we quit the app before autosave happens, then it'll come up blank next time we run
// this is what it would look like (ADDED AFTER LECTURE) ...
[document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:NULL];

So, you have to Add the 'document saveToURL' line in the 'fetchFlickrDataInDocument' function like this:

- (void)fetchFlickrDataIntoDocument:(UIManagedDocument *)document
    {
        dispatch_queue_t fetchQ = dispatch_queue_create("Flickr fetcher", NULL);
        dispatch_async(fetchQ, ^{
            NSArray *photos = [FlickrFetcher recentGeoreferencedPhotos];
            [document.managedObjectContext performBlock:^{

// perform in the NSMOC's safe thread (main thread)
                for (NSDictionary *flickrInfo in photos) {
                    [Photo photoWithFlickrInfo:flickrInfo inManagedObjectContext:document.managedObjectContext];
                    // table will automatically update due to NSFetchedResultsController's observing of the NSMOC
                }

                // should probably saveToURL:forSaveOperation:(UIDocumentSaveForOverwriting)completionHandler: here!
                // we could decide to rely on UIManagedDocument's autosaving, but explicit saving would be better
                // because if we quit the app before autosave happens, then it'll come up blank next time we run
                // this is what it would look like (ADDED AFTER LECTURE) ...
                [document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:NULL];
                // note that we don't do anything in the completion handler this time

            }];
        });

    }
于 2012-11-27T05:45:16.930 回答
2

有趣的。我遇到了同样的问题,我也在使用 XCode 4.3,但只是认为这是因为你需要的 Flickr 许可证,而我没有。(在FlickAPIKey.h中,有一个#define FlickrAPIKey @"",如果您没有该密钥,您将不会下载任何内容。)

更新:我给自己弄了一个 Flickr API 密钥(你可以从他们的网站上获得一个)并尝试了 XCode 4.3 上的 Photomania 应用程序:它就像一个魅力,所以看起来 XCode 不是你的问题。(尽管有时我发现我必须停止并重新启动 XCode 才能摆脱奇怪的错误或编译器错误。)无论如何,在重试之前先删除数据可能是一个想法:在运行之前删除应用程序它和数据库文件也将被删除。

于 2012-07-04T06:59:23.240 回答
0

如果有人在使用 Objective-C 时仍然面临同样的问题,那么在获取 API 密钥后您还需要做一件事:将所有内容更改http://https://FlickrFetcher 文件夹中的文件内。这对我有用。

于 2017-01-10T18:40:35.830 回答