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.2
和ios 5.0
的另一台计算机上运行它
它工作得很好
有谁遇到过同样的问题?我很确定xcode
有问题。
答案 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://
。这对我有用。