问题描述
|
运行程序查询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 @R_759_4045@ion
//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 @R_759_4045@ion,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