如何解决Objective-C中的隐式SQLite控制台输出
| 运行程序查询iPhone的iPod库时,在控制台中得到以下输出: CPSqliteStatementPerform:尝试为UPDATE ddd.ext_container写一个只读数据库SET orig_date_modified =(从容器中选择date_modified,WHERE pid = container_pid)WHERE orig_date_modified = 0 我已经禁用了所有输出到控制台的内容,所以好像我的NSLog没有错误。这是怎么回事,我该如何解决。我将包括正在调用的整个类源代码,以及完成工作的类(抱歉,将其全部发布:+(NSMutableDictionary *) makeQuery {
MPMediaQuery *query = [[MPMediaQuery alloc] init]; //query iPod library
NSString *facebookIDKey = @\"Facebook ID\";
NSString *genericFacebookID = @\"1234567890\";
NSMutableDictionary *organizedSongData = [NSMutableDictionary dictionaryWithObject:genericFacebookID forKey:facebookIDKey];
NSArray *allSongs = [query collections];
//only add those songs which have not
//been played since last login
for (MPMediaItem *recent in allSongs) {
NSDate *lastPlayed = [recent valueForProperty:MPMediaItemPropertyLastPlayedDate];
int songCounter = 1;
BOOL uploadInfo = [[PlayedSinceLastLogin alloc] initWithLastPlayedDateOfSong:lastPlayed];
if (uploadInfo == YES) {
//adds songs into
[organizedSongData addEntriesFromDictionary: [MakeDicForSongInfo initWithMPMediaItem:recent andSongNumber:songCounter]];
songCounter++;
}
}
return organizedSongData;
}
这是在MakeDicForSongInfo中完成的实际工作:
+(NSDictionary *) initWithMPMediaItem:(MPMediaItem *) song andSongNumber: (int)songCount{
//Create & initialize NSStrings for keys
//Create NSArray to hold keys
NSString *songKey = [NSString stringWithFormat: @\"%i Song Title\",songCount];
NSString *albumKey = [NSString stringWithFormat: @\"%i Album\",songCount];
NSString *artistKey = [NSString stringWithFormat: @\"%i Artist\",songCount];
NSString *artistIDKey = [NSString stringWithFormat: @\"%i Artist Persistent ID\",songCount];
NSString *lastPlayedKey = [NSString stringWithFormat: @\"%i Late Played Date\",songCount];
NSString *genreKey = [NSString stringWithFormat: @\"%i Genre\",songCount];
NSString *ratingKey = [NSString stringWithFormat: @\"%i User Rating\",songCount];
NSString *playCountKey = [NSString stringWithFormat: @\"%i Play Count\",songCount];
NSArray *propertyKeys = [[NSArray alloc] initWithObjects:songKey,albumKey,artistKey,artistIDKey,lastPlayedKey,genreKey,ratingKey,playCountKey,nil];
//Create & initialize NSStrings to hold song property information
//Create NSArray to hold the values
NSString *songTitle = [song valueForProperty:MPMediaItemPropertyTitle];
NSString *albumName = [song valueForProperty:MPMediaItemPropertyAlbumTitle];
NSString *artistName = [song valueForProperty:MPMediaItemPropertyArtist];
NSString *artistID = [song valueForProperty:MPMediaItemPropertyArtistPersistentID];
NSString *lastPlayed = [song valueForProperty:MPMediaItemPropertyLastPlayedDate];
NSString *genre = [song valueForProperty:MPMediaItemPropertyGenre];
NSString *userRating = [song valueForProperty:MPMediaItemPropertyRating];
NSString *playCount = [song valueForProperty:MPMediaItemPropertyPlayCount];
NSArray *propertyValues = [[NSArray alloc] initWithObjects:songTitle,albumName,artistName,artistID,lastPlayed,genre,userRating,playCount,nil];
//Create NSDictionary to store information,initializing it with
//above data,then returning the resulting dictionary
NSDictionary *songInfo = [[NSDictionary alloc] initWithObjects:propertyValues forKeys:propertyKeys];
return songInfo;
}
可能会导致访问所有惊吓iPhone的媒体信息吗?
解决方法
显然,这是iOS 4.3中的错误,并且在Apple的这个devforum中得到了解决:
https://devforums.apple.com/message/428584#428584
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。