Photomania-斯坦福保罗Hegarty的班级

时间:2012-06-26 03:03:48

标签: iphone objective-c xcode

xcode 4.3.2的核心数据是否有问题 我正在关注Stanford Paul Hegarty class for ios 5.0 进行核心数据演练(Video 14 Core data demo) 我下载了文件here

我在xcode 4.3.2中运行了它,但核心数据似乎不起作用,因为tableview中的条目没有出现。 我尝试在xcode 4.2ios 5.0的另一台计算机上运行它 它工作得很好 有谁遇到过同样的问题?我很确定xcode有问题。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

Paul Hegarty上课后,发布了他的代码的更新版本,该代码调用了SAVE CoreData数据库!这可能是您的CoreData信息不会持续存在的原因。

他的更新说明是:

// 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];

所以,你必须在'fetchFlickrDataInDocument'函数中添加'document saveToURL'行,如下所示:

- (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

            }];
        });

    }

答案 2 :(得分:0)

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